首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

Windows 透明視窗實作:分層視窗與 Alpha Blending 兩種方案

     編輯:VC 教學

方案一:Windows 2000+ 分層視窗 (WS_EX_LAYERED)

Windows 2000 引入 WS_EX_LAYERED 延伸樣式,配合 SetLayeredWindowAttributes 即可輕鬆實現半透明效果:

void __fastcall TForm1::FormCreate(TObject *Sender)
{
    long lRt = GetWindowLong(Handle, GWL_EXSTYLE);
    lRt |= WS_EX_LAYERED;
    SetWindowLong(Handle, GWL_EXSTYLE, lRt);
    SetLayeredWindowAttributes(Handle, clBlue, 200, LWA_ALPHA); // 200/255 透明度
}

方案二:Windows 95/NT 相容方案 (手動 Alpha Blending)

舊版 Windows 無分層視窗支援,需自行實現:

  1. 取得桌面 DC,建立相容點陣圖,發送 WM_PAINT 將桌面內容繪製至點陣圖(螢幕截圖)。
  2. 將自有視窗內容繪製至另一點陣圖。
  3. 對兩張點陣圖執行 Alpha Blending 或其他混合演算法,產生第三張圖。
  4. 將結果 BitBlt 輸出至螢幕。

此法雖繁瑣,但可在不支援分層視窗的系統上實現透明效果。

相關資源

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