SkiaSharp blend modları

Bu makaleler özelliğine BlendModeSKPaintodaklanır. BlendMode özelliği türündedir SKBlendModeve 29 üyeli bir numaralandırmadır.

özelliği, BlendMode mevcut grafik nesnelerin (hedef olarak adlandırılır) üzerinde bir grafik nesnesi (genellikle kaynak olarak adlandırılır) işlendiğinde ne olacağını belirler. Normalde, yeni grafik nesnesinin altındaki nesneleri gizlemesini bekleriz. Ancak bunun nedeni varsayılan karıştırma modunun olmasıdırSKBlendMode.SrcOver. Bu, kaynağın hedef üzerinde çizildiği anlamına gelir. Diğer 28 üye SKBlendMode başka etkilere neden olur. Grafik programlamada, grafik nesneleri çeşitli şekillerde birleştirme tekniği, birleştirme olarak bilinir.

SKBlendModes sabit listesi

SkiaSharp harmanlama modları, W3C Birleştirme ve Harmanlama Düzeyi 1 belirtiminde açıklananlara yakın bir şekilde karşılık gelir. Skia SkBlendMode'a Genel Bakış da yararlı arka plan bilgileri sağlar. Blend modlarına genel bir giriş için Wikipedia'daki Blend modları makalesi iyi bir başlangıçtır. Blend modları Adobe Photoshop'ta desteklenir, bu nedenle bu bağlamda blend modları hakkında çok fazla çevrimiçi bilgi vardır.

Numaralandırmanın SKBlendMode 29 üyesi üç kategoriye ayrılabilir:

Porter-Duff Ayrıştırılabilir Ayrıştırılamaz
Clear Modulate Hue
Src Screen Saturation
Dst Overlay Color
SrcOver Darken Luminosity
DstOver Lighten
SrcIn ColorDodge
DstIn ColorBurn
SrcOut HardLight
DstOut SoftLight
SrcATop Difference
DstATop Exclusion
Xor Multiply
Plus

Bu üç kategorinin adları, izleyen tartışmalarda daha anlamlı olacaktır. Üyelerin burada listelendiği sıra, numaralandırmanın tanımındakiyle SKBlendMode aynıdır. İlk sütundaki 13 numaralandırma üyesinin 0 ile 12 tamsayı değerleri vardır. İkinci sütun, 13 ile 24 arasında tamsayılara karşılık gelen numaralandırma üyeleridir ve üçüncü sütundaki üyelerin değerleri 25 ile 28 arasındadır.

Bu karışım modları, W3C Birleştirme ve Karıştırma Düzeyi 1 belgesinde yaklaşık olarak aynı sırada ele alınmaktadır, ancak birkaç fark vardır: Src Mod W3C belgesinde Kopyala olarak adlandırılır ve Plus Daha Açık olarak adlandırılır. W3C belgesi, ile aynı SrcOverolacağından içinde SKBlendModes yer alınmamış bir Normal karıştırma modunu tanımlar. Karıştırma Modulate modu (ikinci sütunun en üstünde) W3C belgesine dahil değildir ve modun Multiply tartışması öncesinde olur Screen.

Modulate Karıştırma modu Skia'ya özgü olduğundan ek bir Porter-Duff modu ve ayrıştırılabilir mod olarak ele alınacaktır.

Saydamlığın önemi

Geçmişte, birleştirme alfa kanalı kavramıyla birlikte geliştirilmiştir. Nesne ve tam renkli bit eşlem gibi SKCanvas bir görüntü yüzeyinde her piksel 4 bayttan oluşur: kırmızı, yeşil ve mavi bileşenler için her biri 1 bayt ve saydamlık için ek bir bayt. Bu alfa bileşeni tam saydamlık için 0, tam opaklık için 0xFF ve bu değerler arasında farklı saydamlık düzeyleri vardır.

Harmanlama modlarının çoğu saydamlığa dayanır. Genellikle, bir SKCanvasPaintSurface işleyicide ilk kez bir elde edildiğinde veya bit eşlem üzerinde çizmek için bir SKCanvas oluşturulduğunda, ilk adım şu çağrıdır:

canvas.Clear();

Bu yöntem, tuvalin tüm piksellerini veya tamsayı 0x00000000 eşdeğer new SKColor(0, 0, 0, 0) saydam siyah piksellerle değiştirir. Tüm piksellerin tüm baytları sıfır olarak başlatılır.

İşleyicide PaintSurface elde edilen bir SKCanvas çizim yüzeyinin beyaz arka planı olabilir, ancak bunun nedeniSKCanvasView, kendisinin saydam bir arka plana sahip olması ve sayfanın beyaz bir arka plana sahip olmasıdır. özelliğini SKCanvasView bir Xamarin.Forms renge ayarlayarak Xamarin.FormsBackgroundColor bu gerçeği kendinize gösterebilirsiniz:

canvasView.BackgroundColor = Color.Red;

Veya öğesinden ContentPagetüretilen bir sınıfta sayfa arka plan rengini ayarlayabilirsiniz:

BackgroundColor = Color.Red;

SkiaSharp tuvalinin kendisi saydam olduğundan SkiaSharp grafiklerinizin arkasında bu kırmızı arka planı görürsünüz.

SkiaSharp Saydamlığı makalesi, bileşik görüntüde birden çok grafiği düzenlemek için saydamlığı kullanmayla ilgili bazı temel teknikleri gösterdi. Karışım modları bunun ötesine geçer, ancak saydamlık karışım modları için önemli olmaya devam eder.

SkiaSharp Porter-Duff karışım modları

Kaynak ve hedef görüntüleri temel alan sahneler oluşturmak için Porter-Duff harmanlama modlarını kullanın.

SkiaSharp ayrıştırılabilir karışım modları

Kırmızı, yeşil ve mavi renkleri değiştirmek için ayrıştırılabilir karışım modlarını kullanın.

SkiaSharp ayrıştırılamayan karışım modları

Tonu, doygunluğu veya parlaklığı değiştirmek için ayrıştırılamayan karışım modlarını kullanın.