允许用户在CStatic C ++ MFC App中绘制拖动矩形

时间:2013-06-17 14:10:07

标签: c++ mfc picturebox drawrectangle

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

此处说明了在窗口内容上绘制拖动矩形的常用技巧:

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

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