0
在MSDN,我讀這問題關於圖紙沒有WM_PAINT消息
當不使用WM_PAINT消息繪圖時,應用程序通常 不壞的窗口。相反,它以這樣的方式繪製,它可以很容易地恢復窗口並移除繪圖。
這是什麼意思?因爲我寫了一個GIS程序,我想實現「放大」功能, 鼠標左鍵按下並移動鼠標繪製一個矩形,它繪製一個矩形,但矩形覆蓋地圖,首先我認爲這是因爲矩形不透明,那麼我使用AlphaBlend()繪製一個透明的矩形,它是一樣的。 我該怎麼辦?
LRESULT OnMouseMove(UINT nflags, CPoint point)
{
if (m_bZoomInMode)
{
m_curScreenPoint.x = point.x;
m_curScreenPoint.y = point.y;
HDC hdc = GetDC();
SelectObject(hdc, (HBRUSH)NULL_BRUSH);
Rectangle(hdc, m_startScreenPoint.x, m_startScreenPoint.y, point.x, point.y);
ReleaseDC(hdc);
return 0;
}
}
MSDN中的評論與您的問題無關。 – 2013-03-08 14:39:17
繪製選擇矩形的技巧是將繪圖筆設置爲異或模式'SetROP2(hDC,R2_XORPEN);'並用空心筆刷。第一次繪製將繪製一個線矩形反轉原始屏幕像素,第二次繪製在同一個矩形將恢復原始像素。參考這個例子:http://www.programmersheaven.com/mb/windows/104684/104684/drawing-a-selection-box-on-screen-with-the-mouse---example-code/ – mfc 2013-03-12 03:08:06
如果你在你的項目中使用MFC,你可以簡單地使用'CRectTracker'類。 – mfc 2013-03-12 03:12:37