日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TransparentBitmap函数设置透明位图的原理分析

發布時間:2025/3/12 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TransparentBitmap函数设置透明位图的原理分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、函數的功能:把一張位圖設置成透明,不影響背景圖的顯示,并可改變大小

2、函數的思想:

? (1)以當前的hdc創建5個設備兼容dc(HDC):hMem,hSave,hBack,hObject,hTemp
? (2)將要透明處理的位圖塊選入其中一個hTemp,獲取寬高,并轉換成邏輯點值;
? (3)創建4個臨時位圖(HBITMAP):bmMem,bmSave,bmBack,bmObject
? ??其中bmMem和bmSave為設備兼容位圖,bmBack和bmObject為單色位圖
? (4)將創建的臨時位圖分別選入臨時DC中,效果圖如下:

圖1 原位圖 ? (5)設置選入過位圖塊的hTemp的映射模式,并保存到hSave;
? (6)將hTemp的背景色設置為要透明的顏色,在原樣拷貝到hObject,創建目標屏蔽碼,
? ? ?然后恢復源DC(hTemp)的原始背景色;

圖2 目標屏蔽碼位圖

? (7)創建反轉的目標屏蔽碼:將hObject中的目標屏蔽碼取反,然后拷貝到hBack中;

? ? ? 圖3 反轉的目標屏蔽碼 ? (8)拷貝主DC的背景到目標DC:hdc→hMem;(SRCCOPY)

? ? ? ? ? ? ?? ? ? ?

圖4 主屏幕該位置處的背景位圖 ? ??屏蔽位圖的顯示區:hObject→hMem;(SRCAND)

? ? ? ? ? ? ? ?

圖5 目標屏蔽碼屏蔽背景位圖 ? ??屏蔽位圖中的透明色:hBack→hTemp;(SRCAND)

? ? ? ? ? ??? ? ? ?

圖6 反轉屏蔽碼屏蔽位圖中的透明色后的結果 ? ??將位圖與目標DC的背景做異或操作:hTemp→hMem;(SRCINVERT)

? ? ? ? ? ? ? ? ? ? ? ? ?

圖7 圖6與圖5異或操作的結果 ? ??拷貝目標到屏幕上:hMem→hdc;(SRCCOPY)(改變大小在此步驟中用StretchBlt)

? ? ? ? ? ? ? ? ? ? ? ? ? ??

圖8 拷貝到屏幕該位置的局部效果(未改變大小) ? ??恢復原始位圖:hSave→hTemp;(SRCCOPY)
? (9)刪除臨時內存位圖,刪除臨時內存DC;

總結

以上是生活随笔為你收集整理的TransparentBitmap函数设置透明位图的原理分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。