SkiaSharp 혼합 모드

이러한 문서에서는 BlendModeSKPaint. 이 BlendMode 속성은 29개의 멤버가 있는 열거형 형식 SKBlendMode입니다.

이 속성은 BlendMode 그래픽 개체(소스라고도 함)가 기존 그래픽 개체(대상이라고 함)에 렌더링될 때 발생하는 작업을 결정합니다. 일반적으로 새 그래픽 개체가 그 아래에 있는 개체를 가릴 것으로 예상합니다. 그러나 기본 혼합 모드는 SKBlendMode.SrcOver원본이 대상 위에 그려지므로 발생합니다. 다른 원인의 SKBlendMode 다른 28 멤버는 다른 효과. 그래픽 프로그래밍에서 그래픽 개체를 다양한 방식으로 결합하는 기술을 작성이라고 합니다.

SKBlendModes 열거형

SkiaSharp 혼합 모드는 W3C Compositing 및 Blending Level 1 사양에 설명된 모드와 밀접하게 일치합니다. Skia SkBlendMode 개요 는 유용한 배경 정보도 제공합니다. 혼합 모드에 대한 일반적인 소개의 경우 Wikipedia의 Blend 모드 문서는 좋은 시작입니다. 혼합 모드는 Adobe 사진hop에서 지원되므로 해당 컨텍스트에서 혼합 모드에 대한 추가 온라인 정보가 많이 있습니다.

열거형의 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 모드를 W3C 문서의 복사라고 하며 Plus 라이터라고 합니다. W3C 문서는 와 동일SrcOver하기 때문에 포함되지 SKBlendModes 않은 표준 혼합 모드를 정의합니다. Modulate 두 번째 열의 맨 위에 있는 혼합 모드는 W3C 문서에 포함되지 않으며 모드에 Multiply 대한 설명이 앞에 섰습니다Screen.

Modulate 혼합 모드는 Skia에 고유하기 때문에 추가 포터 더프 모드와 분리 가능한 모드로 설명됩니다.

투명성의 중요성

역사적으로, 작성은 알파 채널개념과 함께 개발되었다. 개체 및 전체 색 비트맵과 같은 SKCanvas 디스플레이 화면에서 각 픽셀은 4바이트로 구성됩니다. 빨강, 녹색 및 파란색 구성 요소에 대해 각각 1바이트, 투명도를 위한 추가 바이트입니다. 이 알파 구성 요소는 전체 투명도의 경우 0이고 전체 불투명도의 경우 0xFF 해당 값 간에 다른 수준의 투명도가 있습니다.

대부분의 혼합 모드는 투명도를 사용합니다. 일반적으로 처리기에서 PaintSurface 처음 가져오는 경우 SKCanvas 또는 비트맵에 그리기 위해 만들어진 경우 SKCanvas 첫 번째 단계는 다음 호출입니다.

canvas.Clear();

이 메서드는 캔버스의 모든 픽셀을 투명한 검은색 픽셀 또는 정수 0x00000000 바 new SKColor(0, 0, 0, 0) 꿉니다. 모든 픽셀의 모든 바이트가 0으로 초기화됩니다.

처리기에서 PaintSurface 가져온 드로잉 화면 SKCanvas 은 흰색 배경이 있는 것처럼 보일 수 있지만, 이는 자체에 투명한 배경이 있고 페이지에 흰색 배경이 있기 SKCanvasView 때문입니다. 속성을 색으로 설정 Xamarin.FormsBackgroundColorSKCanvasView 하여 이 사실을 직접 보여 줄 수 있습니다.Xamarin.Forms

canvasView.BackgroundColor = Color.Red;

또는 파생 클래스에서 ContentPage페이지 배경색을 설정할 수 있습니다.

BackgroundColor = Color.Red;

SkiaSharp 캔버스 자체가 투명하기 때문에 SkiaSharp 그래픽 뒤에 빨간색 배경이 표시됩니다.

SkiaSharp 투명도 문서에서는 투명도를 사용하여 여러 그래픽을 복합 이미지로 정렬하는 몇 가지 기본 기술을 보여 줍니다. 혼합 모드는 그 이상이지만 투명도는 혼합 모드에 중요한 기본.

SkiaSharp 포터-더프 블렌드 모드

포터-더프 블렌드 모드를 사용하여 원본 및 대상 이미지를 기반으로 장면을 작성합니다.

SkiaSharp 분리 가능한 혼합 모드

분리 가능한 혼합 모드를 사용하여 빨강, 녹색 및 파랑 색을 변경합니다.

SkiaSharp 분리할 수 없는 혼합 모드

분리할 수 없는 혼합 모드를 사용하여 색조, 채도 또는 광도를 변경합니다.