首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

MFC Static 控件疊加繪圖:所有繪圖代碼集中在一個 OnPaint 中

     編輯:程式設計疑難解答

問題

多個波紋圖用多個 Static 控件無法疊加,或單個 Static 內多次繪圖相互覆蓋。

解決

只用一個 Static 控件(或直接在 View/Dialog 的 OnPaint 中),將所有波紋的繪圖代碼**集中在同一次繪圖過程**中順序執行:

void CMyDlg::OnPaint() {
    CPaintDC dc(this);
    // 波紋1
    DrawWave(&dc, wave1Data, RGB(255,0,0));
    // 波紋2
    DrawWave(&dc, wave2Data, RGB(0,255,0));
    // 波紋3...
    DrawWave(&dc, wave3Data, RGB(0,0,255));
}

關鍵點

  • 同一 DC 上順序繪圖,后繪制的自動覆蓋/疊加在前面之上。
  • 若需透明疊加,用 `TransparentBlt` 或 GDI+ `Graphics::DrawImage` 帶 Alpha。
  • 避免多個 Static 控件重疊(Z-order、剪裁區問題多)。

總結

一個 DC、一次 `OnPaint`、順序調用繪圖函數,即可實現任意數量波紋圖疊加顯示。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved