Режимы смешения SkiaSharp
В этих статьях основное внимание уделяется свойству BlendMode
SKPaint
. Свойство BlendMode
имеет тип SKBlendMode
, перечисление с 29 элементами.
Свойство BlendMode
определяет, что происходит, когда графический объект (часто называемый источником) отрисовывается поверх существующих графических объектов (называемых назначением). Как правило, мы ожидаем, что новый графический объект скрывает объекты под ним. Но это происходит только потому, что режим SKBlendMode.SrcOver
смешивания по умолчанию , что означает, что источник рисуется по назначению. Другие 28 членов причины других последствий SKBlendMode
. В графическом программировании метод объединения графических объектов различными способами называется компостированием.
Перечисление S КБ lendModes
Режимы смешения SkiaSharp тесно соответствуют описанным в спецификации W3C Compositing и Blending Level 1 . Обзор Skia SkBlendMode также предоставляет полезные справочные сведения. Общее введение в режимы смешивания, статья о режимах blend в Википедии является хорошим началом. Режимы смешивания поддерживаются в Adobe Photoshop, поэтому в этом контексте есть много дополнительных сведений о режимах смешения.
29 членов перечисления SKBlendMode
можно разделить на три категории:
Портер-Дафф | Разделяющимися | Неразделимые |
---|---|---|
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 |
Имена этих трех категорий будут иметь больше смысла в следующих обсуждениях. Порядок перечисления элементов совпадает с определением перечисления SKBlendMode
. 13 элементов перечисления в первом столбце имеют целые значения от 0 до 12. Второй столбец — это элементы перечисления, соответствующие целым числам 13–24, а члены в третьем столбце имеют значения 25–28.
Эти режимы смешения рассматриваются примерно в том же порядке в документе W3C Compositing и Blending Level 1, но есть несколько различий: Src
режим называется Copy в документе W3C и Plus
называется Lighter. Документ W3C определяет обычный режим смешивания, который не входит в SKBlendModes
состав, так как он будет совпадатьSrcOver
. Режим Modulate
смешения (в верхней части второго столбца) не включен в документ W3C, а обсуждение Multiply
режима предшествует Screen
.
Modulate
Так как режим смешивания является уникальным для Skia, он будет обсуждаться в качестве дополнительного режима Porter-Duff и в качестве режимов сепарабельного режима.
Важность прозрачности
Исторически создание было разработано в сочетании с концепцией альфа-канала. В области отображения, такой как SKCanvas
объект и полноцветное растровое изображение, каждый пиксель состоит из 4 байтов: 1 байт для красных, зеленых и синих компонентов, а также дополнительный байт для прозрачности. Этот альфа-компонент равен 0 для полной прозрачности и 0xFF для полной прозрачности с разными уровнями прозрачности между этими значениями.
Многие из режимов смешивания зависят от прозрачности. Как правило, при SKCanvas
первом получении в обработчике или при SKCanvas
создании для рисования на растровом PaintSurface
рисунке первым шагом является следующий вызов:
canvas.Clear();
Этот метод заменяет все пиксели холста прозрачными черными пикселями, эквивалентными new SKColor(0, 0, 0, 0)
целочисленным 0x00000000. Все байты всех пикселей инициализированы до нуля.
Поверхность рисования SKCanvas
, полученная в обработчике PaintSurface
, может иметь белый фон, но это только потому, что SKCanvasView
сам имеет прозрачный фон, и страница имеет белый фон. Этот факт можно продемонстрировать себе, задав Xamarin.FormsBackgroundColor
свойству SKCanvasView
Xamarin.Forms цвета:
canvasView.BackgroundColor = Color.Red;
Кроме того, в классе, наследуемом от ContentPage
этого, можно задать цвет фона страницы:
BackgroundColor = Color.Red;
Вы увидите этот красный фон за графикой SkiaSharp, так как сам холст SkiaSharp является прозрачным.
В статье SkiaSharp Transparency показаны некоторые основные методы использования прозрачности для упорядочивания нескольких графиков в составном изображении. Режимы смешения выходят за рамки этого, но прозрачность остается важной для режимов смешивания.
Режимы смешения SkiaSharp Porter-Duff
Используйте режимы смешивания Porter-Duff для создания сцен на основе исходных и целевых изображений.
Режимы смешения skiaSharp с разделителями
Используйте режимы сепарабельной смеси для изменения красных, зеленых и синих цветов.
Режимы смешения skiaSharp без разделителя
Используйте неразделимые режимы смешения, чтобы изменить оттенки, насыщенность или светимость.