Aracılığıyla paylaş


Dönüşümler (DirectComposition)

Not

Windows 10'daki uygulamalar için DirectComposition yerine Windows.UI.Composition API'lerini kullanmanızı öneririz. Daha fazla bilgi için bkz. Görsel katmanını kullanarak masaüstü uygulamanızı modernleştirme.

Bu konu, iki boyutlu (2B) benfin (doğrusal) dönüşümler için Microsoft DirectComposition desteğini açıklar ve DirectComposition'ın desteklediği dönüşüm türlerini açıklar.

DirectComposition, 3B perspektif dönüşümlerini de destekler, ancak ara bit eşlem oluşturulmasını gerektirdiğinden, DirectComposition bunları dönüşümler yerine efektler olarak kabul eder. 3B perspektif dönüştürme efektleri hakkında bilgi için bkz. Efektler.

Bu konu aşağıdaki bölümleri içerir:

DirectComposition 2D dönüşümü nedir?

2B dönüştürme, görseli başka bir konuma taşıyarak (çeviri), büyütme veya küçültme (ölçeklendirme), döndürme (döndürme) veya şeklini bozarak (eğriltme) görselin konumunu, boyutunu veya doğasını iki boyutta değiştirmenize olanak tanır.

2B dönüşüm, bir görselin noktalarını aynı koordinat alanı içindeki bir konumdan diğerine veya bir koordinat alanından diğerine eşleyerek elde edilir. Bu eşleme, aşağıdaki tabloda gösterildiği gibi üç sütun kayan nokta değerleri içeren üç satırdan oluşan bir koleksiyon olarak tanımlanan, dönüştürme matrisi olarak adlandırılan değerler tablosu tarafından açıklanmıştır.

M11Default: 1.0
M21Default: 0.0
M31OffsetX: 0.0

M12Default: 0.0
M22Default: 1.0
M32Offsety: 0.0

0.0
0.0
1.0

Affine 2D dönüşümleri için dönüştürme matrisi, önceki dönüştürme matrisinden üçüncü sütunu atlayan 3'e 2 matristir. Aşağıdaki tabloda bu matrisin düzeni gösterilmektedir.

M11Default: 1.0
M21Default: 0.0
M31OffsetX: 0.0

M12Default: 0.0
M22Default: 1.0
M32Offsety: 0.0

Not

DirectComposition, stereo içeriğe 2B dönüşümler uygularken özel bir işlem yapmaz. Bu, bir 2B dönüşüm uygulandığında 3B içeriğin bozuk görünebileceği anlamına gelir.

DirectComposition 2D koordinat alanı

DirectComposition solak 2B koordinat alanı kullanır; yani pozitif x ekseni değerleri sağa, pozitif y ekseni değerleri aşağı doğru artar. Görseller, aşağıdaki çizimde gösterildiği gibi x ekseni ve y ekseninin kesiştiği nokta olan (0, 0) çıkış noktasına göre konumlandırılır.

Sol elle kullanılan koordinat alanının x eksenini ve y eksenini

3'e 2 dönüştürme matrisindeki değerleri değiştirerek, nesneyi iki boyutta döndürebilir, ölçeklendirebilir, eğebilir ve çevirebilirsiniz. Örneğin, OffsetX değerini 100 ve OffsetY değerini 200 olarak ayarlarsanız, nesneyi 100 piksel sağa ve 200 piksel aşağı taşırsınız.

Affine 2D dönüşümleri desteği

Aşağıdaki tabloda DirectComposition tarafından desteklenen affine 2D dönüşüm türleri açıklanır ve çeşitli dönüştürme türlerini gerçekleştirmek için kullanabileceğiniz arabirimler listelenir.

Dönüştürme/arabirim Açıklama Resim
2B IDCompositionRotateTransform döndürme bir görseli belirtilen merkez noktası hakkında belirtilen açıya göre döndürün. özgün karenin merkezi hakkında saat yönünde 45 derece döndürülmüş bir karenin çizimi
IdCompositionScaleTransform2BÖlçeklendirme bir görseli belirtilen merkez noktası hakkında belirtilen faktöre göre ölçeklendirin. yüzde 130 ölçeklendirilmiş kareçizimi
2B Eğrilt IDCompositionSkewTransform bir görseli x ekseni ve y ekseni boyunca belirtilen açıya göre ve belirtilen merkez noktasının çevresinde eğriltin. y ekseninden saat yönünün tersine 30 derece eğilmiş kare
2B IDCompositionTranslateTransform çevirisi bir görselin konumunu x ekseni ve y ekseni yönünde değiştirin. Bir karenin çizimi pozitif x ekseni boyunca 20 birim ve pozitif y ekseni boyunca 10 birim

Matris 2B dönüşümleri

IDCompositionMatrixTransform arabirimi, kendi 3 x 2 benfin 2B dönüşüm matrisinizi tanımlamanızı ve bir görsele uygulamanızı sağlar. Bu arabirim, diğer DirectComposition dönüştürme arabirimleri aracılığıyla kullanılamayan bir tür affine 2D dönüşümü uygulamanız gerekiyorsa kullanışlıdır. Matrisi bir D2D_MATRIX_3X2_F yapısını doldurup IDCompositionMatrixTransform::SetMatrix yöntemine geçirerek tanımlarsınız.

Grupları dönüştürme

Birden çok dönüşümü tek bir dönüşümde birleştirmek için dönüştürme gruplarını kullanabilirsiniz. Dönüştürme grubu, matrisleri koleksiyonda belirtildikleri sırada birlikte çarpılan dönüştürme nesneleri koleksiyonunu tanımlar. Sonuçta elde edilen dönüştürme matrisi görsele uygulanır. Dönüşüm grubu, her dönüşümü ayrı ayrı uygulamakla aynı sonucu verir.

Dönüştürme grubundaki dönüştürme nesnelerinin sırasının önemli olduğunu unutmayın. Örneğin, bir görsel önce döndürülür, sonra ölçeklendirilir ve sonra çevrilirse, sonuç görselin önce çevrilmesi, döndürülmesi ve sonra ölçeklendirilmesinden farklıdır. DirectComposition, dönüştürmeleri her zaman koleksiyonda belirtildiği sırayla bir görsele uygular.

Dönüştürme grubu oluşturmak için, önce gruba eklemek istediğiniz dönüştürme nesnelerini oluşturun ve ardından IDCompositionDevice::CreateTransformGroup yöntemine bir dönüştürme nesnesi işaretçileri dizisi geçirin. Bir dönüştürme grubu oluşturduktan sonra, herhangi bir dönüştürme nesnesi ekleyemez veya kaldıramazsınız. Ancak, koleksiyondaki tek tek dönüştürme nesnelerinin özelliklerini değiştirebilirsiniz ve değişiklikler sonuçta elde edilen dönüştürme matrisinde yansıtılır.

Animasyonu dönüştürme

Dönüşümün özellikleri animasyonlu olabilir. Bir özellik animasyonlu olduğunda, DirectComposition özelliğin değerini bir kerede değil, zamanla değiştirir. Bu özellikle geçiş oluştururken kullanışlıdır. Daha fazla bilgi için bkz. Animasyon.

  • DirectComposition Kavramları