簡體   English   中英

允許用戶在CStatic C ++ MFC App中繪制拖動矩形

[英]Allow user to draw a drag rectangle in CStatic C++ MFC App

我有一個MFC應用程序,該對話框中有一個Picture Control。 最終,我希望允許用戶通過在我加載的圖像的圖片控件中通過鼠標拖動來繪制可調整大小的矩形。

我將自己的圖片控件類定義為CStatic的子類,並且正在處理鼠標按下,鼠標向上移動和鼠標移動事件,但是我似乎無法弄清楚如何允許用戶繪制矩形。 任何對此的指導將不勝感激。

我看過的大多數示例都向我展示了如何在CView:CWnd中繪制矩形,但是我對MFC不太熟悉,因此我有點迷茫。 謝謝。

用戶單擊鼠標按鈕時,需要記錄鼠標坐標,以便知道矩形的起始位置。 您還應該設置某種類型的標志,以指示用戶正在拖動鼠標。 當用戶移動鼠標時,獲取當前的鼠標位置並使用DrawDragRect或類似函數繪制矩形。 當用戶釋放鼠標按鈕時,請清除前面提到的“標志”,然后完成該過程。

您還需要處理其他事件,例如控件和/或父窗口失去焦點,以便可以取消拖動/繪制操作。 由於您的問題中未包含任何代碼,因此很難說您還需要做什么,但這只是基礎。

此處說明了在窗口內容頂部繪制拖動矩形的常用技術:

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

那是Win32 API編碼而不是MFC編碼,但是差異很小。 基本思想是通過使用SetROP2(hdc,R2_NOTXORPEN)進行繪制; 您將現有像素反轉,然后再次繪制相同的矩形,將這些像素重新反轉回原始圖像。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM