我把坐标模式设置成MM_HIMETRC屏幕中心为(0,0)坐标后,我的防闪烁缓冲的模式也是MM_HIMETRC显示的东西全都乱了这是怎么回事,应该怎么设置缓冲模式呀
如果屏幕和缓冲两个都设置成MM_TEXT模式就一切正常这是怎么回事呀,请高人指点一下,最好给出一小段代码

解决方案 »

  1.   

    MM_HIMETRC 这不是防闪烁模式,MSDN的说明:"Each logical unit is mapped to 0.01 millimeter. Positive x is to the right; positive y is up."这里你要处理好逻辑坐标和物理坐标的关系就可以了.
      

  2.   

    实际上是
        a1 o______________o a2
          /              /
         /              /
        /              /
    a3 o______________o a4
    a1绕着a3,a2绕着a4旋转alpha角度而已。
    设a1(x1,y1),a2(x2,y2),a3(x3,y3),a4(x4,y4)
    则有
    float offsetX = x1 - x3 ;
    float offsetY = y3 - y1 ;
    float alpha = atan(offsetX / offsetY) ;
    取得当前需要旋转的角度了。然后开始旋转。
    则有方向余弦矩阵
    C = |cos(alpha)   sin(alpha)|
        |-sin(alpha)  cos(alpha)|
    则以a3为原点的相对坐标系下a1'的坐标为:
    a1' = (x1 - x3, y3 - y1)
    然后矩阵相乘
    |x1'| = C * |x1'|
    |y1'|       |y1'|
    此时的a1'就是所求坐标点,将其变换回来即可。
    x1 = x3 + x1' ;
    y1 = y3 - y1' ;
    则a1(x1,y1)为旋转后的点。同理求出a2相对于a4旋转后的点,
    利用a1,a2,a3,a4重绘该四边形即可。