共用方式為


裁剪 directComposition ()

注意

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

裁剪可藉由將視覺化或樹狀結構的轉譯限制為特定矩形區域,只顯示視覺效果或視覺化樹狀結構的一部分。 本主題描述裁剪視覺效果的 Microsoft DirectComposition 支援。 它包含下列各節:

裁剪矩形

視覺物件具有 Clip 屬性,可在視覺效果的點陣圖內容中定義矩形區域或 裁剪矩形。 當視覺效果轉譯到畫面時,只會在畫面上繪製剪輯矩形內的點陣圖內容部分,而在裁剪矩形外延伸的內容則會裁剪 (不會繪製) 。 根據預設,Clip 屬性會包含所有點陣圖內容。

視覺效果的 Clip 屬性會套用至所有子視覺效果和子系視覺效果。 換句話說,任何落在父系裁剪矩形界限外的子系或子系內容也會被裁剪。

DirectComposition 會在套用 OffsetX、OffsetY 和 2D Transform 屬性之前套用 Clip 屬性,但在套用 Effect 和 3D Transform 屬性之後。 這表示 2D 轉換、OffsetX 和 OffsetY 都會同時影響視覺內容和裁剪矩形。 而 3D 轉換和效果則不適用於裁剪矩形。

例如,套用位移或 2D 轉換時,裁剪矩形會受到轉換矩陣的影響。 因此,新增位移和 2D 旋轉 (45 度) 以及圓角裁剪矩形將會導致下列情況:

的圖表,顯示 2d 轉換在裁剪矩形上的效果。

在裁剪矩形內套用 3D 轉換時,裁剪矩形不會受到轉換矩陣的影響。 即使在 Z 軸周圍套用旋轉 (與上一個範例) 實際上相同,下圖是結果:

顯示立體轉換不會影響矩形剪輯 (視覺效果在剪輯) 內旋轉的圖表。

請注意,視覺效果會在剪輯內旋轉,因為 3D 矩陣不會套用至剪輯本身。

如果 Clip 屬性設定為空矩形,則會完全裁剪視覺效果;也就是說,視覺效果會包含在視覺化樹狀結構中,但不會轉譯任何專案。 如果您不想在組合中包含特定視覺效果,請從視覺化樹狀結構移除視覺效果,而不是設定空的裁剪矩形。 移除視覺效果會產生更佳的效能。

您可以使用 IDCompositionVisual::SetClip 方法來設定視覺效果的 Clip 屬性。 這個方法包含多載,可讓您將 Clip 屬性的值設定為靜態矩形或剪輯物件。 如果您不需要在視覺效果存留期間變更裁剪矩形的維度,請使用靜態矩形。 如果您需要變更維度或以動畫顯示剪輯矩形,請使用 clip 物件。

Clip 物件

剪輯物件是元件物件模型 (COM) 物件,代表裁剪矩形。 您可以使用 IDCompositionDevice::CreateRectangleClip 方法來建立剪輯物件,然後使用物件的 IDCompositionRectangleClip 介面來設定物件的屬性。 新建立的剪輯物件具有 Left 和 Top 屬性的最小可能值,以及 Right 和 Bottom 屬性的最大可能值,有效地使其成為無作業剪輯物件。 換句話說,物件代表會包含視覺效果之整個點陣圖內容的剪輯矩形。

剪輯物件包含一組屬性,可讓您指定剪輯物件的圓角。 屬性可讓您設定裁剪物件每個角落的 x 半徑和 Y 半徑。

動畫裁剪矩形

您可以將動畫物件套用至剪輯物件的 Left、Top、Right 和 Bottom 屬性,以動畫顯示剪輯矩形。 使用 IDCompositionVisual::SetClip (IDCompositionClip) 多載方法,將動畫剪輯矩形套用至視覺效果的 Clip 屬性。

如需動畫物件的詳細資訊,請參閱 動畫

DirectComposition 概念

如何使用 Rectangle Clip 物件裁剪