Sdílet prostřednictvím


Režimy směsi SkiaSharp

Tyto články se zaměřují na BlendMode vlastnost SKPaint. Vlastnost BlendMode je typu SKBlendMode, výčet s 29 členy.

Vlastnost BlendMode určuje, co se stane, když se grafický objekt (často označovaný jako zdroj) vykresluje nad existujícími grafickými objekty (označovanými jako cíl). Za normálních okolností očekáváme, že nový grafický objekt zakryje objekty pod ním. K tomu ale dochází pouze proto, že výchozí režim blendu je SKBlendMode.SrcOver, což znamená, že zdroj je nakreslen přes cíl. Ostatních 28 členů SKBlendMode způsobuje jiné účinky. V grafickém programování se technika kombinování grafických objektů různými způsoby označuje jako kompozitování.

Výčet SKBlendModes

Režimy směsi SkiaSharp úzce odpovídají režimům popsaným ve specifikaci W3C Compositing a Blending Level 1 . Přehled Skia SkBlendMode také poskytuje užitečné informace o pozadí. Pro obecný úvod do režimů blendu je článek o režimech Blendu na Wikipedii dobrým startem. Režimy Blendu jsou podporovány v aplikaci Adobe Photoshop, takže existuje mnoho dalších online informací o režimech blendu v tomto kontextu.

29 členů výčtu SKBlendMode lze rozdělit do tří kategorií:

Porter-Duff Oddělitelné Neseparovatelné
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

Názvy těchto tří kategorií budou mít v diskuzích, které následují, významnější. Pořadí, ve které jsou členy uvedeny, je stejné jako v definici výčtu SKBlendMode . Členy výčtu 13 v prvním sloupci mají celočíselné hodnoty 0 až 12. Druhý sloupec jsou členy výčtu, které odpovídají celým číslům 13 až 24 a členové ve třetím sloupci mají hodnoty 25 až 28.

Tyto režimy blendu jsou popsány přibližně ve stejném pořadí v dokumentu W3C Kompoziting a Blending Level 1, ale existuje několik rozdílů: Src Režim se nazývá Kopírovat v dokumentu W3C a Plus se nazývá Světlejší. Dokument W3C definuje normální režim mixu, který není součástíSKBlendModes, protože by byl stejný jako SrcOver. Režim Modulate blendu (v horní části druhého sloupce) není součástí dokumentu W3C a předchozí diskuze o Multiply režimu Screen.

Vzhledem k tomu, že režim mixu Modulate je jedinečný pro Skia, bude popsán jako další režim Porter-Duff a jako oddělitelný režim.

Důležitost transparentnosti

Historicky bylo kompozitování vyvinuto ve spojení s konceptem alfa kanálu. Na ploše zobrazení, jako SKCanvas je objekt a fullbarevný rastrový obrázek, se každý pixel skládá ze 4 bajtů: 1 bajt každý pro červenou, zelenou a modrou součást a další bajt pro průhlednost. Tato alfa komponenta je 0 pro úplnou transparentnost a 0xFF pro plnou neprůhlednost s různými úrovněmi průhlednosti mezi těmito hodnotami.

Mnoho režimů mixu závisí na průhlednosti. Obvykle platí, že při SKCanvas prvním získání v obslužné rutině PaintSurface nebo při SKCanvas vytvoření nakreslení rastrového obrázku je prvním krokem toto volání:

canvas.Clear();

Tato metoda nahradí všechny pixely plátna průhlednými černými pixely, které odpovídají new SKColor(0, 0, 0, 0) celočíselnému 0x00000000. Všechny bajty všech pixelů se inicializují na nulu.

Nakreslený povrch SKCanvas obslužné rutiny se může zdát, že PaintSurface má bílé pozadí, ale to je jenom proto SKCanvasView , že samotný má průhledné pozadí a stránka má bílé pozadí. Tuto skutečnost si můžete předvést nastavením Xamarin.FormsBackgroundColor vlastnosti SKCanvasView na Xamarin.Forms barvu:

canvasView.BackgroundColor = Color.Red;

Nebo ve třídě, která je odvozena , ContentPagemůžete nastavit barvu pozadí stránky:

BackgroundColor = Color.Red;

Toto červené pozadí uvidíte za grafikou SkiaSharp, protože samotné plátno SkiaSharp je průhledné.

Článek SkiaSharp Transparency ukázal některé základní techniky použití průhlednosti k uspořádání více grafiky ve složeného obrázku. Režimy prolnutí jsou nad rámec toho, ale průhlednost zůstává pro režimy blendu zásadní.

Režimy mixu SkiaSharp Porter-Duff

Režimy blendu Porter-Duff použijte k vytváření scén založených na zdrojových a cílových obrázcích.

Režimy separable blendu SkiaSharp

K úpravě červených, zelených a modrých barev používejte režimy s možností prolnutí.

Režimy neparable blendu skiaSharp

K úpravě odstínu, sytosti nebo světelnosti použijte neparable režimy prolnutí.