Share via


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.FormsSKCanvasView kendisine uygulayabilirsiniz, çünkü SKCanvasView öğesinden VisualElementtüretilir, ancak bu SKCanvasViewiç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.