【发布时间】:2015-08-10 10:16:00
【问题描述】:
我想实现红线移动哦 H/V 标尺,类似于我在 windows 画笔 (8.1) 中看到的指示当前鼠标位置。看例子(560处的红线):
最好的方法是什么。 Direct2D动画?层?还有其他简单的技巧吗?这里的事情是有效地做到这一点,而无需在鼠标移动时重新绘制整个区域。
我目前使用 MFC/direct2d,所以我在视图内用字段和标尺绘制自己的区域,因此我可以完全控制这里的图形。
【问题讨论】:
-
每当鼠标移动时,只需invalidate您之前渲染标记的矩形即可。
-
另外 1. 我将如何返回标记之前的内容?我应该重新粉刷所有东西还是每次都记住以前的东西?我如何将重绘消息传递给 onDraw2d,为什么会出现此消息(MouseHover),以便它知道它应该移动标记而不是重绘它?
-
你不需要记住任何东西。您只需使窗口的适当部分无效,然后在下一次渲染过程中(当应用程序接收到
WM_PAiNT消息时),将渲染内容。这将恢复以前的内容。 -
我已附上上图,方便讨论。假设我画了上面显示的图片(标尺和网格)。现在鼠标已从 560 X 坐标移动,我需要 1)擦除前一行 - 请注意,我必须记住画线之前的内容,以便正确恢复标尺图片 2)在新鼠标位置绘制红线。
-
你是怎么画的? Direct2D 还是 GDI?
标签: graphics mfc directx direct2d