Výřez (DirectComposition)

Poznámka

U aplikací ve Windows 10 doporučujeme místo DirectComposition používat rozhraní API pro Windows.UI.Composition. Další informace najdete v tématu Modernizace desktopové aplikace pomocívrstvy vizuálu .

Oříznutí poskytuje způsob, jak odhalit pouze část vizuálu nebo vizuálního stromu tím, že omezuje vykreslování daného vizuálu nebo stromu na specifickou obdélníkovou oblast. Toto téma popisuje podporu Microsoft DirectComposition pro ořezávání vizuálů. Obsahuje následující části:

Vystřihnout obdélník

Objekt vizuálu má vlastnost Klip, která definuje obdélníkovou oblast nebo obdélník klipu, v rámci rastrového obsahu vizuálu. Při vykreslení vizuálu na obrazovku se na obrazovce nakresluje jenom část rastrového obrázkového obsahu, která je uvnitř obdélníku klipartu, zatímco obsah, který se rozšiřuje mimo obdélník klipu, je oříznutý (nevykreslený). Ve výchozím nastavení vlastnost Clip obsahuje veškerý rastrový obsah.

Vlastnost Klip vizuálu se vztahuje na všechny podřízené a sestupné vizuály. Jinými slovy, jakýkoli podřízený nebo potomkový obsah, který spadá mimo hranice obdélníku klipu nadřazeného prvku, je také oříznut.

DirectComposition aplikuje vlastnost Clip před aplikací vlastností OffsetX, OffsetY a 2D Transform, ale po aplikaci efektu a vlastností 3D Transform. To znamená, že 2D transformace, OffsetX a OffsetY ovlivní i vizuální obsah, i obdélník klipu. Zatímco 3D transformace a efekty nebudou platit pro obdélník klipu.

Například při použití posunu nebo 2D transformace je výřezový obdélník ovlivněn transformační maticí. Přidání posunu a 2D otočení (45 stupňů) spolu s obdélníkem zaobleného rohového klipartu bude mít za následek:

diagram znázorňující efekt 2d transformace na ořezový obdélník

Při použití 3D transformace "uvnitř" obdélníku klipu není obdélník klipu ovlivněn transformační maticí. I když použijete otočení kolem osy Z (ve skutečnosti stejné jako v předchozím příkladu), je výsledkem následující diagram:

diagram znázorňující, že 3D transformace nemá vliv na obdélníkový klip (obraz se otočí v rámci klipu).

Všimněte si, že vizuál je otočený v rámci klipu, protože 3D matice není použita přímo na něj.

Pokud je vlastnost Clip nastavena na prázdný obdélník, vizuál je zcela oříznut; to znamená, že vizuál je součástí vizuálního stromu, ale nevykresluje nic. Pokud nechcete do skládání zahrnout konkrétní vizuál, odeberte vizuál ze stromu vizuálu místo nastavení prázdného obdélníku klipu. Odebrání vizuálních prvků vede k lepšímu výkonu.

Vlastnost Clip vizuálu nastavíte pomocí IDCompositionVisual::SetClip metoda. Tato metoda zahrnuje přetížení, které umožňují nastavit hodnotu vlastnosti Clip na statický obdélník nebo na objekt klipu. Pokud během doby trvání vizuálního prvku nepotřebujete měnit rozměry ořezového obdélníku, použijte statický obdélník. Pokud potřebujete změnit rozměry nebo animovat ořezový obdélník, použijte ořezový objekt.

Vystřihovnout objekt

Objekt klipu je objekt modelu COM (Component Object Model), který představuje obdélník klipu. Objekt klipu vytvoříte pomocí metody IDCompositionDevice::CreateRectangleClip a poté použijete rozhraní IDCompositionRectangleClip pro nastavení vlastností objektu. Nově vytvořený objekt klipu má minimální možné hodnoty pro vlastnosti Vlevo a Nahoře a maximální možné hodnoty pro vlastnosti Vpravo a Dole, čímž se z něj efektivně stává klip objekt no-op. Jinými slovy, objekt představuje výřezový obdélník, který by zahrnoval celý bitmapový obsah vizuálu.

Klipový objekt obsahuje sadu vlastností, které umožňují určit zaoblené rohy klipového objektu. Vlastnosti umožňují nastavit poloměr x a poloměr y každého rohu ořezového objektu.

Animovaný klipový obdélník

Výřezový obdélník můžete animovat použitím animačních objektů na vlastnosti Levá, Horní, Pravá a Dolní objektu klipu. Použijte přetíženou metodu IDCompositionVisual::SetClip(IDCompositionClip) k aplikaci animovaného obdélníku klipu na vlastnost Clip visualu.

Další informace o animačních objektech naleznete v tématu Animace.

koncepty DirectComposition

Jak oříznout pomocí obdélníkového ořezového objektu