Megosztás a következőn keresztül:


Átalakítások (DirectComposition)

Jegyzet

Windows 10-es alkalmazások esetén a DirectComposition helyett a Windows.UI.Composition API-kat javasoljuk. További információ: Asztali alkalmazás modernizálása a Visual layerhasználatával.

Ez a témakör a Kétdimenziós (2D) affin (lineáris) átalakítások Microsoft DirectComposition-támogatását ismerteti, és ismerteti a DirectComposition által támogatott átalakítások típusait.

A DirectComposition támogatja a térhatású perspektíva-átalakításokat is, de mivel köztes bitkép létrehozását igénylik, a DirectComposition az átalakítások helyett effektusoknak tekinti őket. A térhatású perspektíva-átalakító effektusokról további információt az Effektusokcímű témakörben talál.

Ez a témakör a következő szakaszokat tartalmazza:

Mi az a DirectComposition 2D átalakítás?

A 2D átalakítás lehetővé teszi a vizualizáció pozíciójának, méretének vagy jellegének két dimenzióban történő megváltoztatását azáltal, hogy a vizualizációt egy másik helyre (fordításra) helyezi át, így nagyobb vagy kisebb lesz (skálázás), elforgatja (elforgatja), vagy eltorzítja annak alakját (skewing).

A kétdimenziós átalakítás úgy érhető el, hogy egy vizualizáció pontjait egy pozícióból egy másikba alakítja egy adott koordinátatéren belül, vagy az egyik koordinátatérből a másikba. Ezt a leképezést egy transzformációs mátrixnak nevezett értéktáblázat írja le, amely három sorból álló gyűjtemény, három lebegőpontos értékkel, az alábbi táblázatban látható módon.

M11Default: 1.0
M21Default: 0.0
M31OffsetX: 0.0

M12Default: 0.0
M22Default: 1.0
M32OffsetY: 0.0

0.0
0.0
1.0

Az affine 2D transzformációk átalakítási mátrixa egy 3-by-2 mátrix, amely kihagyja az előző átalakítási mátrix harmadik oszlopát. Az alábbi táblázat a mátrix elrendezését mutatja be.

M11Default: 1.0
M21Default: 0.0
M31OffsetX: 0.0

M12Default: 0.0
M22Default: 1.0
M32OffsetY: 0.0

Jegyzet

A DirectComposition nem végez különleges feldolgozást a 2D-átalakítások sztereó tartalmakra való alkalmazásakor. Ez azt jelenti, hogy a 3D-tartalom torzítva jelenhet meg, amikor 2D-átalakítást alkalmaz rá.

A DirectComposition 2D koordináta-tér

A DirectComposition balkezes 2D koordináta-helyet használ; vagyis a pozitív x tengely értékei jobbra, a pozitív y tengely értékei pedig lefelé növekednek. A vizualizációk a forráshoz viszonyítva vannak elhelyezve, amely az x tengely és az y tengely metszete (0, 0) az alábbi ábrán látható módon.

balkezes koordináta-tér x tengelye és y tengelye

A 3-by-2 transzformációs mátrix értékeinek módosításával két dimenzióban elforgathatja, méretezheti, elvarrhatja és lefordíthatja az objektumokat. Ha például az OffsetX értéke 100, az Eltolás értéke 200, akkor az objektumot a jobb 100 képpontra és 200 képpontra állítja.

Affine 2D-átalakítások támogatása

Az alábbi táblázat a DirectComposition által támogatott affine 2D-átalakítások típusait ismerteti, és felsorolja a különböző típusú átalakítások végrehajtásához használható interfészeket.

Átalakítás/felület Leírás Illusztráció
2D IDCompositionRotateTransform elforgatása forgassa el a vizualizációt a megadott szögben a megadott középpont körül. 45 fokkal elforgatott négyzet illusztrációja az eredeti négyzet közepén, az óramutató járásával megegyező irányban
2D IDCompositionScaleTransform méretezése skálázhat egy vizualizációt a megadott középpont megadott tényezője alapján. 130%-os négyzetméretű
Ferde 2D IDCompositionSkewTransform a vizualizációt az x tengely és az y tengely mentén, valamint a megadott középpont körül a megadott szög alapján kell elvarrni. 30 fokos szögletes ferdeség ábrája az y tengely
2D IDCompositionTranslateTransform fordítása módosíthatja egy vizualizáció pozícióját az x tengely és az y tengely irányában. ábra egy négyzet mozgatott 20 egység mentén a pozitív x tengely és 10 egység mentén a pozitív y tengely

Mátrix 2D-átalakítások

Az IDCompositionMatrixTransform interfész lehetővé teszi saját 3 by-2 affine 2D transzformációs mátrix definiálásához és vizualizációkhoz való alkalmazásához. Ez a felület akkor hasznos, ha olyan affine 2D átalakítást kell alkalmaznia, amely nem érhető el a többi DirectComposition átalakító adapteren keresztül. A mátrixot úgy határozhatja meg, hogy kitölt egy D2D_MATRIX_3X2_F struktúrát, és átadja az IDCompositionMatrixTransform::SetMatrix metódusnak.

Csoportok átalakítása

Az átalakítási csoportokkal több átalakítást egyesíthet egybe. Az átalakítási csoport olyan átalakítási objektumok gyűjteményét határozza meg, amelyek mátrixai összeszorozódnak a gyűjteményben megadott sorrendben. Az eredményként kapott transzformációs mátrix ezután a vizualizációra lesz alkalmazva. Az átalakítási csoport ugyanazt az eredményt hozza létre, mint az egyes átalakítások külön-külön történő alkalmazása.

Ne feledje, hogy az átalakító csoportban lévő átalakítási objektumok sorrendje fontos. Ha például egy vizualizációt először elforgatnak, majd skáláznak, majd lefordítanak, az eredmény eltér attól, hogy a vizualizációt először lefordítják, majd elforgatják, majd skálázják. A DirectComposition mindig a gyűjteményben megadott sorrendben alkalmazza az átalakításokat egy vizualizációra.

Átalakítási csoport létrehozásához először hozza létre a csoportba felvenni kívánt átalakító objektumokat, majd adjon át egy átalakítási objektummutató-tömböt az IDCompositionDevice::CreateTransformGroup metódusnak. Az átalakítási csoport létrehozása után nem vehet fel és nem távolíthat el átalakítási objektumokat. Módosíthatja azonban a gyűjtemény egyes átalakító objektumainak tulajdonságait, és a módosítások az eredményként kapott átalakítási mátrixban is megjelennek.

Animáció átalakítása

Az átalakítás tulajdonságai animálhatók. Ha egy tulajdonság animálva van, a DirectComposition az idő függvényében módosítja a tulajdonság értékét, nem pedig egyszerre. Ez különösen hasznos áttűnések létrehozásakor. További információ: Animációs.