共用方式為


DirectComposition 的最佳做法

注意

針對 Windows 10 上的應用程式,我們建議使用 Windows.UI.Composition API,而不是 DirectComposition。 如需詳細資訊,請參閱 使用視覺層將傳統型應用程式現代化。

本主題描述使用 Microsoft DirectComposition 的最佳做法。

最佳作法

下表提供使用 Microsoft DirectComposition 視覺效果的建議作法。

練習 描述
建立 DirectComposition 裝置之後,呼叫 IDCompositionDevice::CheckDeviceState 方法來回應每個WM_PAINT訊息,以確保裝置仍然有效。
如果 Microsoft DirectX Graphics Infrastructure (DXGI) 裝置遺失,則與 DXGI 裝置相關聯的 DirectComposition 裝置也會遺失。 當它偵測到遺失的裝置時,DirectComposition 會將 WM_PAINT 訊息傳送至所有視窗。 呼叫 CheckDeviceState 以回應每個 WM_PAINT 訊息,可讓您判斷 DirectComposition 裝置物件是否仍然有效,如果不是,請採取步驟來復原內容。
如需詳細資訊,請參閱 Device 物件
只建立組合或動畫所需的視覺效果數目,並在 DirectComposition 使用它們完成之後立即終結視覺效果。
DirectComposition 會使用圖形處理單位 (GPU),這是您的應用程式與其他應用程式和操作系統共用的資源。 這種做法可確保所有應用程式和操作系統都會收到足夠的 GPU 資源。
如需詳細資訊,請參閱 視覺效果
將不透明度設定為 0%,請勿隱藏視覺效果;請改為從可視化樹狀結構移除視覺效果。
將不透明度設定為 0% 需要比從可視化樹狀結構中移除更多的系統資源。
如需詳細資訊,請參閱 不透明度可視化樹狀結構
請勿將空白(零大小)的剪輯矩形套用至視覺效果,以隱藏視覺效果。 相反地,請從可視化樹狀結構中移除視覺效果。
從可視化樹狀結構移除視覺效果會產生比套用空白剪輯矩形更好的效能。
如需詳細資訊,請參閱 裁剪
如果不需要剪輯矩形,請勿將剪輯矩形套用至視覺效果,例如包含視覺效果整個位圖內容的剪輯矩形。
不必要的裁剪矩形會損害系統效能。
如需詳細資訊,請參閱 裁剪
如果您需要大型的單色位圖,請建立較小的點陣圖表面,然後套用小數字數轉換,而不是建立完整大小的表面。
將縮放轉換套用至較小的表面會使用比完整尺寸表面更少的系統資源。
如需詳細資訊,請參閱 位圖物件轉換
避免將 3D 轉換套用至可視化樹狀結構的多個層級,例如父代及其子代。
將 3D 轉換套用至可視化樹狀結構的多個層級可能會產生非預期的結果,因為 3D 轉換不會在樹狀結構中乘以。 例如,在子系上繞 Y 軸旋轉 90 度,在父系的 Y 軸周圍旋轉 90 度,這兩個視覺效果都會旋轉為無。
如需詳細資訊,請參閱效果

安全性考量

下列文章提供撰寫安全 C++ 程式代碼的指引。

如何使用 DirectComposition