溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何實(shí)現(xiàn)C++語言中的毛玻璃效果

發(fā)布時間:2021-10-27 18:00:33 來源:億速云 閱讀:445 作者:柒染 欄目:編程語言

今天就跟大家聊聊有關(guān)如何實(shí)現(xiàn)C++語言中的毛玻璃效果,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

在基于Windows Vista的普通Windows應(yīng)用程序及對話框程序中,如何利用C++語言來生成Aero毛玻璃效果,此處使用的是Beta 2版本的Vista及Windows SDK,現(xiàn)在就讓大家看一下震撼的效果吧。

一些API在細(xì)節(jié)上會有所變化。另外,文中沒有使用MFC,全部例子用WTL 7.5生成,其可在http://wtl.sourceforge.net/下載得到,雖然此處使用的是Visual C++ 2003,但Visual C++ 2005也類似。

Aero主題及毛玻璃效果,是隨同Vista"桌面窗口治理(DWM)"而來的新特性,也是微軟市場推廣的一個重心,在應(yīng)用程序中集成毛玻璃效果,當(dāng)打開Aero主題時,程序看上去會顯得非常與眾不同--很酷,對吧。

Aero主題中的毛玻璃效果

當(dāng)以Aero為主題時,Vista會根據(jù)計(jì)算機(jī)顯卡進(jìn)行判定是否開啟毛玻璃效果,此時桌面由DWM進(jìn)行繪制,而DWM使用一個composition進(jìn)程來渲染桌面,其會在頂層窗口的非客戶區(qū)自動使用Aero主題元素(有點(diǎn)類似于Windows XP)。又說回來,也不是總會添加這些毛玻璃效果的,假如計(jì)算機(jī)運(yùn)行于"電池模式",或用戶決定關(guān)閉透明效果,那么非客戶區(qū)就不會有毛玻璃效果了,如下圖所示。

假如在控制面板的可視效果中打開了透明玻璃效果,那非客戶區(qū)看上去就像下圖這樣:

如何實(shí)現(xiàn)C++語言中的毛玻璃效果

請留意,記事本的邊框呈現(xiàn)綠色調(diào),這是墻紙透過來的顏色,并且也可以透過標(biāo)題欄看到桌面的一些圖標(biāo)。我們在編寫代碼的時候,要害只須留意composition是否打開,而不是設(shè)置了什么毛玻璃效果,因?yàn)镈WM會處理毛玻璃效果繪制的部分。

項(xiàng)目開始

***個示例程序是不帶視窗口、工具條、狀態(tài)條的SDI應(yīng)用程序,在運(yùn)行完WTL AppWizard之后,***件事就是設(shè)置stdafx.h中的#define,以便利用Vista的新特性。Vista的Windows版本為6,且Vista中IE的版本為7,設(shè)置完成后應(yīng)像下面這樣:

如何實(shí)現(xiàn)C++語言中的毛玻璃效果

在GetThemeTextMetrics() API中的轉(zhuǎn)換,是對Platform SDK的uxtheme.h中錯誤的修正,然而,Windows SDK卻沒有這個錯誤,所以這個轉(zhuǎn)換導(dǎo)致了一個錯誤,可刪除函數(shù)中的這個轉(zhuǎn)換,其他三個也同樣。 添加邊框的毛玻璃效果。

看完上述內(nèi)容,你們對如何實(shí)現(xiàn)C++語言中的毛玻璃效果有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI