簡體   English   中英

如何對現有顏色進行位圖透明?

[英]How do I do bitmap transparency on an existing color?

我正在使用Win32。 我發現在這里 ,如果你使用:

BitBlt(hdc, 0, 0, 32, 32, hdcMem, 0, 0, SRCAND); // hdc has mask in it
BitBlt(hdc, 0, 0, 32, 32, hdcMem, 0, 0, SRCPAINT);`// hdc has regular image in it

您可以創建位圖透明度。 我的問題是,這依賴於hdc在目標位置已經為空的事實。 我不是,所以代碼擦除(使黑色)現有圖像的一部分。 如何將透明位圖復制到已經繪制了東西的區域?

我嘗試將掩碼和圖像都發送到1000,1000 - 其中沒有在hdc中繪制任何內容,然后在BitBlt()中使用SRCCOPY將結果從hdc復制到hdc。 但要么在1000,1000沒有得出任何東西,要么它沒有正確復制回來。

您可以使用TransparentBlt

BOOL TransparentBlt(
  _In_  HDC hdcDest,
  _In_  int xoriginDest,
  _In_  int yoriginDest,
  _In_  int wDest,
  _In_  int hDest,
  _In_  HDC hdcSrc,
  _In_  int xoriginSrc,
  _In_  int yoriginSrc,
  _In_  int wSrc,
  _In_  int hSrc,
  _In_  UINT crTransparent
);

如果源位圖的背景顏色為黑色( #000000 ),只需將crTransparent設置為RGB(0,0,0)

暫無
暫無

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

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