在标尺上绘制红线表示鼠标位置(MFC / Direct2D)

时间:2015-05-28 04:53:52

标签: graphics mfc directx direct2d

我想实现红线移动哦H / V标尺类似于我在windows画笔(8.1)中看到的指示当前鼠标位置。参见示例(560处的红线):

example

最好的方法是什么。 Direct2D动画?层?还有其他简单的把戏吗这里的事情是有效地进行,而不是在鼠标移动时重新绘制整个区域。

我目前正在使用MFC / direct2d,因此我在视图中使用字段和标尺绘制自己的区域,因此我可以完全控制图形。

1 个答案:

答案 0 :(得分:0)

有很多方法可以解决这个问题。最简单的方法是依靠您的OnPaint函数根据成员变量在一个位置绘制线条。在OnMouseMove处理程序中,根据保存的变量在行的当前位置调用InvalidateRect,更新变量,然后再次为新行位置调用InvalidateRect

BeginPaint构造函数中生成的CPaintDC调用将根据您提供的无效矩形设置剪切区域。即使您的OnPaint尝试绘制整个窗口,也只会重绘已经失效的那些部分。如果效率太低,可以将标尺缓存在位图中,并使用GetClipBox确定位图的哪一部分要显示在屏幕上。