在 Windows Vista 之前,Windows 程式會直接繪製到螢幕。 換句話說,程式會直接寫入視訊卡所顯示的記憶體緩衝區。 此方法可能會導致視覺失真,如果視窗未正確重新繪製。 例如,如果使用者將一個視窗拖曳到另一個視窗上,而下方的視窗無法快速重新更新,最上層的視窗則可能會留下痕跡。
由於這兩個視窗都繪製到相同的記憶體區域,因此造成殘影。 拖曳最上方的視窗時,其下方的窗口必須重新繪製。 如果重繪速度太慢,會導致圖像出現先前影像中顯示的瑕疵。
Windows Vista 透過介紹桌面視窗管理員 (DWM) 來從根本上改變視窗繪製方式。 啟用 DWM 時,視窗不會再直接繪製到顯示緩衝區。 相反地,每個視窗都會繪製到螢幕外記憶體緩衝區,也稱為 離屏表面。 DWM 接著會將這些表面復合到螢幕。
DWM 提供數個優於舊圖形架構的優點。
- 较少的重繪訊息。 當一個視窗被另一個視窗阻擋時,受阻的視窗不需要重繪。
- 減少成品。 之前,拖曳視窗可能會產生視覺殘影,如前所述。
- 視覺效果。 因為 DWM 負責組成螢幕,所以它可以呈現視窗的半透明和模糊區域。
- 自動調整以適應高DPI。 雖然縮放比例不是處理高 DPI 的理想方式,但對於未針對高 DPI 設定設計的舊版應用程式而言,這是可行的後援。 (我們稍後會在 DPI 和 Device-Independent 像素節中返回本主題。)
- 替代觀點。 DWM 可以用各種有趣的方式使用螢幕外表面。 例如,DWM 是 Windows Flip 3D、縮圖和動畫轉換背後的技術。
不過請注意,不保證會啟用 DWM。 圖形卡可能不支援 DWM 系統需求,而且使用者可以透過 系統屬性 控制面板停用 DWM。 這表示您的程式不應該依賴 DWM 的重繪行為。 在停用 DWM 的情況下測試您的程式,以確保其能夠正確重繪。
下一個