在MFC绘图的时候,能不能将点的坐标设为double类型的?
或者说改变映射模式能实现这个要求么?如果谁有兴趣可以看看下面的具体的问题:
1:绘制老师给定的一幅地图。中国地图由若干条线组成,每条线上有若干个点,每个点的坐标给的值是double类型。需要的工作就是把各个点连起来就可以得到完整的中国地图。我使用的是moveto和lineto两个函数,其参数要求坐标必须是int类型,所以出现无数warning,但视觉效果上没有太大不同,也就忍了。2:绘制贝塞尔曲线。绘制的时候需要对控制多变型的边求取中点,而这个中点的坐标如果能为double类型的话就可以平滑很多,因为在逼近的时候使用的那个“小量”就可以为一个小数,如果只能用int的话,这个小量就只能是大于1的数(几何意义就是一个像素的宽度)。解决的办法是自己定义了一个结构,类似于POINT,只不过成员都是double类型,最后绘制的时候稍微麻烦一点点,不过还算是都解决了。对于这个问题一直都想解决,又不知道怎么解决。
不知道大家怎么做的,帮个忙,呵呵

解决方案 »

  1.   

    不会是,显示是数字的,离散的,点肯定是像素,像素才几个啊,用int就够用了,换double视觉上也不会有变化啊。
    如果楼主做一个能连续显示的显示设备的话,就可以用double表示点了@_@
      

  2.   

    double在计算过程中有较高的精度,但在显示时都是取整的。LZ的选择应该没问题,显示时做一下四舍五入处理就OK了。
      

  3.   

    自己定义结构体好吧。
    我就是自己定义了自己的点结构体-mypoint。先算坐标再取整绘图。
    我用这种方法绘制的B样条还是非常光滑的。跟CAD中显示的差不多一样。