SkiaSharp Dönüşümleri
SkiaSharp grafiklerini görüntüleme dönüşümleri hakkında bilgi edinin
SkiaSharp, nesnenin yöntemleri olarak uygulanan geleneksel grafik dönüşümlerini SKCanvas
destekler. Matematiksel olarak dönüşümler, grafik nesneler işlenirken çizim işlevlerinde SKCanvas
belirttiğiniz koordinatları ve boyutları değiştirir. Dönüşümler genellikle yinelenen grafikleri çizmek veya animasyon için kullanışlıdır. Bit eşlemleri veya metinleri döndürme gibi bazı teknikler, dönüşümler kullanılmadan mümkün değildir.
SkiaSharp dönüşümleri aşağıdaki işlemleri destekler:
- Koordinatları bir konumdan diğerine kaydırmak için çevir
- Koordinatları ve boyutları artırmak veya azaltmak için ölçeklendirin
- Koordinatları bir nokta etrafında döndürmek için döndür
- Dikdörtgenin paralelograma dönüşmesi için koordinatları yatay veya dikey olarak kaydırmak için eğme
Bunlar afin dönüşümleri olarak bilinir. Afin dönüşümleri her zaman paralel çizgileri korur ve hiçbir zaman bir koordinat veya boyutun sonsuz olmasına neden olmaz. Kare hiçbir zaman paralelkenar dışında bir şeye dönüştürülemez ve daire hiçbir zaman üç nokta dışında bir şeye dönüştürülemez.
SkiaSharp, standart 3'e 3 dönüşüm matrisine dayalı afin olmayan dönüşümleri de (yansıtıcı veya perspektif dönüşümleri olarak da adlandırılır) destekler. Afin olmayan dönüşüm, karenin 180 derecenin altında tüm iç açıları olan dört taraflı bir şekil olan dışbükey dörtgenlere dönüştürülmesini sağlar. Afin olmayan dönüşümler koordinatların veya boyutların sonsuz olmasına neden olabilir, ancak bunlar 3B efektler için hayati önem taşır.
SkiaSharp ile Xamarin.Forms Dönüşümler arasındaki farklar
Xamarin.Forms ayrıca SkiaSharp'takine benzer dönüşümleri destekler. Xamarin.FormsVisualElement
sınıfı aşağıdaki dönüştürme özelliklerini tanımlar:
RotationX
ve RotationY
özellikleri, quasi-3D efektleri oluşturan perspektif dönüşümleridir.
SkiaSharp dönüşümleri ve Xamarin.Forms dönüşümleri arasında birkaç önemli fark vardır:
İlk fark, SkiaSharp dönüşümlerinin nesnenin tamamına SKCanvas
uygulanırken Xamarin.Forms dönüşümlerin tek tek VisualElement
türevlere uygulanmasıdır. (Dönüştürmeleri nesnenin Xamarin.Forms SKCanvasView
kendisine uygulayabilirsiniz, çünkü SKCanvasView
öğesinden VisualElement
türetilir, ancak bu SKCanvasView
içinde SkiaSkarp dönüşümleri uygulanır.)
SkiaSharp dönüşümleri, dönüşümlerin uygulandığı sol üst köşeye SKCanvas
göre belirlenirken Xamarin.Forms , dönüşümlerin sol üst köşesine VisualElement
göre belirlenir. Bu dönüşümler her zaman belirli bir noktaya göre olduğundan ölçeklendirme ve döndürme dönüşümleri uygulanırken bu fark önemlidir.
Gerçekten büyük fark, SKiaSharp dönüşümlerinin yöntemler, dönüşümlerin ise Xamarin.Forms özellikler olmasıdır. Bu, bozulmamış farkın ötesinde anlamsal bir farktır: SkiaSharp dönüşümleri, dönüştürmeler bir durum ayarlarken Xamarin.Forms bir işlem gerçekleştirir. SkiaSharp dönüşümleri, daha sonra çizilen grafik nesnelerine uygulanır, ancak dönüştürme uygulanmadan önce çizilen grafik nesnelerine uygulanmaz. Buna karşılık, Xamarin.Forms özellik ayarlanır ayarlanmaz daha önce işlenmiş bir öğeye dönüştürme uygulanır. Yöntemler çağrıldığında SkiaSharp dönüşümleri kümülatiftir; Xamarin.Forms özelliği başka bir değerle ayarlandığında dönüşümler değiştirilir.
Bu bölümdeki tüm örnek programlar, örnek programın SkiaSharp Dönüşümleri bölümünde görünür. Kaynak kodu çözümün Dönüşümler klasöründe bulunabilir.
Çeviri Dönüşümü
SkiaSharp grafiklerini kaydırmak için çeviri dönüşümünü kullanmayı öğrenin.
Ölçekleme Dönüşümü
Nesneleri çeşitli boyutlara ölçeklendirmek için SkiaSharp ölçek dönüşümünü keşfedin.
Döndürme Dönüşümü
SkiaSharp döndürme dönüşümüyle mümkün olan efektleri ve animasyonları keşfedin.
Eğme Dönüşümü
Eğme dönüştürmesinin eğimli grafik nesnesi nasıl oluşturabileceğini görün.
Matris Dönüşümleri
Çok yönlü dönüşüm matrisi ile SkiaSharp dönüşümlerine daha ayrıntılı bir şekilde göz at.
Dokunma İşlemeleri
Sürükleme, ölçeklendirme ve döndürme için dokunma düzenlemelerini uygulamak için matris dönüşümlerini kullanın.
İlişkili Olmayan Dönüşümler
Affine olmayan dönüşüm efektleriyle sıranın ötesine geçin.
3B Döndürme
2B nesneleri 3B alanda döndürmek için benfin olmayan dönüşümleri kullanın.