1

我有一个 MFC 应用程序,其中对话框中有一个优化校准。最后,我希望允许用户通过鼠标在图片控件中拖动来绘制一个可调整大小的矩形,并覆盖我加载的图像。

我将自己的图片控件类定义为 CStatic 的子类,并且正在处理鼠标按下、鼠标抬起和鼠标移动事件,但我似乎无法弄清楚如何允许用户绘制矩形。对此的任何指导将不胜感激。

我看过的大多数示例都向我展示了如何在 CView:CWnd 中绘制矩形,但我对 MFC 还不太熟悉,所以我有点迷茫。谢谢。

4

2 回答 2

1

当用户单击鼠标按钮时,您需要记录鼠标坐标,以便知道矩形从哪里开始。您还应该设置某种类型的标志来指示用户正在拖动鼠标。当用户移动鼠标时,获取当前鼠标位置并使用DrawDragRect或类似的函数来绘制矩形。当用户释放鼠标按钮时,清除前面提到的“标志”,您就完成了该部分的过程。

您还需要处理其他事件,例如控件和/或父窗口失去焦点,以便您可以取消拖动/绘制操作。由于您没有在问题中包含任何代码,因此很难说您还需要做什么,但这些是基础。

于 2013-06-17T14:55:16.163 回答
1

在窗口内容顶部绘制拖动矩形的常用技术如下所示:

http://msdn.microsoft.com/en-us/library/windows/desktop/dd145184(v=vs.85).aspx

那是 Win32 API 编码而不是 MFC 编码,但差异很小。基本思想是通过绘制 SetROP2(hdc, R2_NOTXORPEN); 您反转现有像素,然后再次绘制相同的矩形将这些像素重新反转回原始图像。

于 2013-06-17T17:32:05.477 回答