五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

窗口透明丨窗口透明度設(shè)置控件透明以及窗體透明源碼

2023-07-28 10:06 作者:libilibivaga  | 我要投稿

透明窗口(窗口上面文字圖片等內(nèi)容不透明)的實(shí)現(xiàn)(使用SetLayeredWindowAttributes API函數(shù))

SetLayeredWindowAttributes的實(shí)現(xiàn)必須將窗口設(shè)置為WS_EX_LAYERED的擴(kuò)展風(fēng)格。? ?然而,只有WS_POPUP窗口才能設(shè)置WS_EX_LAYERED的擴(kuò)展風(fēng)格。這就意味著只能夠在POPUP的窗口中實(shí)現(xiàn)透明窗口,而在WS_CHILD風(fēng)格的窗口中是不能夠?qū)崿F(xiàn)的。


當(dāng)初我就是試了半天發(fā)現(xiàn)不行的。


SetLayeredWindowAttributes的原型如下:


BOOL SetLayeredWindowAttributes(? ? ? ? ? HWND hwnd,

COLORREF crKey,

BYTE bAlpha,

DWORD dwFlags

);

第一個(gè)參數(shù)就是要設(shè)置的窗口的句柄,第二個(gè)就是要設(shè)置的一個(gè)透明色,第三個(gè)是要設(shè)置的透明度,bAlpha的范圍是 0-255,如果是0,那么完全透明,如果是255,是完全不透明。 第四個(gè)參數(shù),就是設(shè)置是按照透明色來(lái)透明,還是按照bAlpha來(lái)透明?;蛘邇蓚€(gè)都設(shè)置。? ? ?如果 dwFlags 設(shè)置了LWA_COLORKEY,那么crKey就起作用,窗口中所有的crKey顏色區(qū)域就會(huì)全部透明,如果dwFlags設(shè)置了LWA_ALPHA,那么bAlpha就會(huì)起作用,整個(gè)窗口就會(huì)按照bAlpha的值來(lái)透明。也可以這兩個(gè)一起設(shè)置來(lái)同時(shí)實(shí)現(xiàn)這兩個(gè)效果。


比如下面的代碼:


SetLayeredWindowAttributes(m_hWnd,RGB(255,0,255),


(BYTE)220,LWA_ALPHA|LWA_COLORKEY);


將會(huì)把窗口的所有的洋紅色區(qū)域全透,然后剩下的區(qū)域半透明。


切記,不能夠分別設(shè)置,比如像下面這么設(shè)置是達(dá)不到要求的:


SetLayeredWindowAttributes(m_hWnd,


RGB(255,0,255),0,LWA_COLORKEY);


SetLayeredWindowAttributes(m_hWnd,0,(BYTE)220,LWA_ALPHA);


下面我們來(lái)實(shí)現(xiàn)一個(gè)半透明的tip窗口:


1.? ? ? ? 由于我們的窗口是要實(shí)現(xiàn)一個(gè)tip,這個(gè)窗口是個(gè)非規(guī)則窗口,所有需要貼圖來(lái)實(shí)現(xiàn)邊框等,所有需要洋紅色全透,其他部分半透的效果。在OnCreat或者OnInitDialog中使用下面的代碼就可以實(shí)現(xiàn)了:


SetLayeredWindowAttributes(m_hWnd,RGB(255,0,255),


(BYTE)220,LWA_ALPHA|LWA_COLORKEY);


2.? ? ? ? ?然后,我們需要窗口整體半透,但是上面的文字內(nèi)容等不能透明,這個(gè)問(wèn)題不能解決,所有只能夠在這個(gè)窗口上面再套上一個(gè)POPUP的upWindow窗口,背景刷上一種純顏色,比如


RGB(0,255,0),然后OnCreat或者OnInitDialog用SetLayeredWindowAttributes設(shè)置窗口全透明,顯示的內(nèi)容都繪制在這個(gè)upWindow,這樣就看起來(lái)實(shí)現(xiàn)了窗口半透明,但是上面的文字不透明的效果。


代碼如下:


SetLayeredWindowAttributes(m_hWnd,RGB(0,255,0),0,LWA_COLORKEY);


在upWindow的OnPaint中寫(xiě)上如下代碼:


CRect rc;


GetClientRect(&rc);


dc.FillSolidRect(rc,RGB(0,255,0);


這樣就實(shí)現(xiàn)了我們需要的效果了。


下圖就是我實(shí)現(xiàn)的效果:


微博博主:當(dāng)時(shí)我就沒(méi)憋住 ?


度娘搜:窗口透明丨窗口透明度設(shè)置控件透明以及窗體透明源碼

窗口透明丨窗口透明度設(shè)置控件透明以及窗體透明源碼的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
娱乐| 阳信县| 绥滨县| 平安县| 宿迁市| 永安市| 镇雄县| 九龙县| 峡江县| 德庆县| 东平县| 清镇市| 中西区| 博爱县| 大同县| 南江县| 交口县| 宜兴市| 板桥市| 阿荣旗| 通州市| 平罗县| 武安市| 洛浦县| 吉木萨尔县| 潢川县| 霍邱县| 惠东县| 江西省| 临潭县| 拉萨市| 麟游县| 边坝县| 桃源县| 项城市| 宁阳县| 墨竹工卡县| 鄂尔多斯市| 包头市| 凤阳县| 政和县|