Á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?
- DirectComposition 2D koordináta-tér
- Affine 2D átalakítások támogatása
- Mátrix 2D átalakítja
- Csoportok átalakítása
- Animáció átalakítása
- Kapcsolódó témakörök
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.
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. |
![]() |
2D IDCompositionScaleTransform méretezése | skálázhat egy vizualizációt a megadott középpont megadott tényezője alapján. |
![]() |
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. |
![]() |
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. |
![]() |
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.