我想实现红线移动哦H / V标尺类似于我在windows画笔(8.1)中看到的指示当前鼠标位置。参见示例(560处的红线):
最好的方法是什么。 Direct2D动画?层?还有其他简单的把戏吗这里的事情是有效地进行,而不是在鼠标移动时重新绘制整个区域。
我目前正在使用MFC / direct2d,因此我在视图中使用字段和标尺绘制自己的区域,因此我可以完全控制图形。
答案 0 :(得分:0)
有很多方法可以解决这个问题。最简单的方法是依靠您的OnPaint
函数根据成员变量在一个位置绘制线条。在OnMouseMove
处理程序中,根据保存的变量在行的当前位置调用InvalidateRect
,更新变量,然后再次为新行位置调用InvalidateRect
。
BeginPaint
构造函数中生成的CPaintDC
调用将根据您提供的无效矩形设置剪切区域。即使您的OnPaint
尝试绘制整个窗口,也只会重绘已经失效的那些部分。如果效率太低,可以将标尺缓存在位图中,并使用GetClipBox
确定位图的哪一部分要显示在屏幕上。