Udostępnij za pośrednictwem


Tryby mieszania SkiaSharp

Te artykuły koncentrują się na BlendMode właściwości .SKPaint Właściwość BlendMode jest typu SKBlendMode, wyliczenie z 29 elementami członkowskimi.

Właściwość BlendMode określa, co się stanie, gdy obiekt graficzny (często nazywany źródłem) jest renderowany na podstawie istniejących obiektów graficznych (nazywanych miejscem docelowym). Zwykle oczekujemy, że nowy obiekt graficzny będzie zaciemniać pod nim obiekty. Dzieje się tak tylko dlatego, że domyślny tryb mieszania to SKBlendMode.SrcOver, co oznacza, że źródło jest rysowane na miejscu docelowym. Pozostałe 28 członków SKBlendMode powoduje inne skutki. W programowaniu graficznym technika łączenia obiektów graficznych na różne sposoby jest nazywana komponowaniem.

Wyliczenie SKBlendModes

Tryby mieszania SkiaSharp są ściśle zgodne z trybami opisanymi w specyfikacji W3C Compositing i Blending Level 1 . Przegląd Skia SkBlendMode zawiera również przydatne informacje podstawowe. Aby zapoznać się z ogólnym wprowadzeniem do trybów mieszania, artykuł Tryby mieszania w Wikipedii jest dobrym początkiem. Tryby mieszania są obsługiwane w programie Adobe Photoshop, dlatego w tym kontekście istnieje wiele dodatkowych informacji online na temat trybów mieszania.

29 członków SKBlendMode wyliczenia można podzielić na trzy kategorie:

Porter-Duff Rozdzielne Nieudzielalne
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

Nazwy tych trzech kategorii będą mieć większe znaczenie w kolejnych dyskusjach. Kolejność wymieniona w tym miejscu elementów członkowskich jest taka sama jak w definicji SKBlendMode wyliczenia. 13 elementów członkowskich wyliczenia w pierwszej kolumnie ma wartości całkowite od 0 do 12. Druga kolumna to elementy członkowskie wyliczenia, które odpowiadają liczbą całkowitą od 13 do 24, a elementy członkowskie w trzeciej kolumnie mają wartości od 25 do 28.

Te tryby mieszania są omawiane w mniej więcej takiej samej kolejności w dokumencie Kompositing I Blending Level 1, ale istnieje kilka różnic: Src tryb jest nazywany kopiowaniem w dokumencie W3C i Plus jest nazywany jaśniejszym. Dokument W3C definiuje normalny tryb mieszania, który nie jest uwzględniony, SKBlendModes ponieważ byłby taki sam jak SrcOver. Tryb Modulate mieszania (w górnej części drugiej kolumny) nie jest uwzględniony w dokumencie W3C, a omówienie Multiply trybu poprzedza Screen.

Modulate Ponieważ tryb mieszany jest unikatowy dla Skia, zostanie omówiony jako dodatkowy tryb Porter-Duff i jako tryb separowalny.

Znaczenie przejrzystości

W przeszłości komponowanie zostało opracowane w połączeniu z koncepcją kanału alfa. Na powierzchni wyświetlanej, takiej jak SKCanvas obiekt i mapa bitowa w pełnym kolorze, każdy piksel składa się z 4 bajtów: 1 bajt dla czerwonych, zielonych i niebieskich składników oraz dodatkowy bajt przezroczystości. Ten składnik alfa jest 0 dla pełnej przezroczystości i 0xFF dla pełnej nieprzezroczystości, z różnymi poziomami przezroczystości między tymi wartościami.

Wiele trybów mieszania opiera się na przezroczystości. Zazwyczaj, gdy element SKCanvas jest po raz pierwszy uzyskiwany w PaintSurface programie obsługi lub gdy SKCanvas jest tworzony do rysowania na mapie bitowej, pierwszym krokiem jest to wywołanie:

canvas.Clear();

Ta metoda zastępuje wszystkie piksele kanwy przezroczystymi czarnymi pikselami, równoważnymi new SKColor(0, 0, 0, 0) lub liczbą całkowitą 0x00000000. Wszystkie bajty wszystkich pikseli są inicjowane do zera.

Powierzchnia rysunku elementu uzyskanego SKCanvas w procedurze PaintSurface obsługi może wydawać się mieć białe tło, ale to tylko dlatego, że SKCanvasView sam obiekt ma przezroczyste tło, a strona ma białe tło. Możesz zademonstrować ten fakt samodzielnie, ustawiając Xamarin.FormsBackgroundColor właściwość SKCanvasView na Xamarin.Forms kolor:

canvasView.BackgroundColor = Color.Red;

Lub w klasie pochodzącej z ContentPageklasy można ustawić kolor tła strony:

BackgroundColor = Color.Red;

Zobaczysz to czerwone tło za grafiką SkiaSharp, ponieważ sama kanwa SkiaSharp jest przezroczysta.

Artykuł SkiaSharp Transparency pokazał kilka podstawowych technik używania przezroczystości do rozmieszczania wielu grafiki na obrazie złożonym. Tryby mieszania wykraczają poza to, ale przejrzystość pozostaje kluczowa dla trybów mieszania.

Tryby mieszania SkiaSharp Porter-Duff

Użyj trybów mieszania Porter-Duff, aby tworzyć sceny na podstawie obrazów źródłowych i docelowych.

Tryby mieszania separable SkiaSharp

Użyj trybów mieszania do separowania, aby zmienić czerwone, zielone i niebieskie kolory.

Tryby mieszania bez separowalnej biblioteki SkiaSharp

Użyj trybów mieszania nieoddzielnych, aby zmienić odcienie, nasycenie lub jasność.