lnhv013710
lnhv013710
采纳率96.7%
2019-04-25 22:58

vs2010 MFC 小数点浮点数与绘图,像素点转化

80
已采纳

如下代码,在F7后有提示:1>MyCKTXDlg.cpp(3520): warning C4244: “初始化”: 从“float”转换到“int”,可能丢失数据。

        int x1T=pArrayDrawList[i].nPoint1_X+nStartX;
        int y1T=pArrayDrawList[i].nPoint1_Y+nStartY;
        int x2T=pArrayDrawList[i].nPoint2_X+nStartX;
        int y2T=pArrayDrawList[i].nPoint2_Y+nStartY;
        pDC->MoveTo(x1T,y1T);
        pDC->LineTo(x2T,y2T);
        请问MoveTo(x1T,y1T);括号里面支持double或者FLOAT吗,如果支持的话,带小数点的值如何在屏幕上绘图,四舍五入成像素点还是全部舍掉小数点后?谢谢
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • wanggui2015 wallesyoyo 2年前

    你可以往这个函数里面传float或double类型的变量,只是会发生隐式的 float或double 到 int 的转换,这个转换属于截断操作(truncate)。也就是说会全部舍弃掉小数点后面的内容。

    点赞 1 评论 复制链接分享
  • caozhy 回答这么多问题就耍赖把我的积分一笔勾销了 2年前

    如果有小数的话,那么建议你用GDI+去画图,它具有反锯齿算法。具体来说,比如你要在 1.5, 1.5 这里画一个点。那么它不是简单地在1, 1或者2, 2画一个点,
    而是在1, 1~2, 2的四个像素里分别画一个灰色的点,四个点总体的亮度=你原来打算画的那个点的亮度。

    如果还不明白,看 https://blog.csdn.net/longshenzhu/article/details/19398851 这里的上面的两个图。

    点赞 1 评论 复制链接分享