블렌드 효과
혼합 효과를 사용하여 2개 이미지를 결합합니다. 이 효과에는 26개의 혼합 모드가 있습니다.
이 효과에 대한 CLSID는 CLSID_D2D1Blend입니다.
혼합 예시
다음은 혼합 효과의 모든 혼합 모드에 대한 예시 이미지입니다. 혼합 모드 및 해당 모드 속성의 전체 목록은 다음 섹션에서 제공됩니다.
다음은 제외 모드를 사용하는 또 다른 예입니다.
이미지 1 이전 |
---|
이미지 2 이전 |
이후 |
ComPtr<ID2D1Effect> blendEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Blend, &blendEffect);
blendEffect->SetInput(0, bitmap);
blendEffect->SetInput(1, bitmapTwo);
blendEffect->SetValue(D2D1_BLEND_PROP_MODE, D2D1_BLEND_MODE_EXCLUSION);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(blendEffect.Get());
m_d2dContext->EndDraw();
효과 속성
표시 이름 및 인덱스 열거형 | 설명 |
---|---|
Mode D2D1_BLEND_PROP_MODE |
효과에 사용되는 혼합 모드입니다. 자세한 내용은 혼합 모드를 참조하세요. 형식은 D2D1_BLEND_MODE입니다. 기본값은 D2D1_BLEND_MODE_MULTIPLY입니다. |
혼합 모드
이 표에는 이 효과의 모든 혼합 모드가 나와 있습니다. 효과의 출력을 계산하는 데 필요한 도우미 함수는 다음 섹션에 나와 있습니다.
색: OPRGB = f(FRGB, BRGB) * FA * BA + FRGB * FA * (1 - BA) + BRGB * BA * (1 - FA)
알파: OA = FA * (1 - BA) + BA
여기서
- OPRGB는 미리 곱한 출력 색입니다.
- OA는 출력 알파입니다.
- BRGB는 미리 곱하지 않은 대상 색입니다.
- BA는 대상 알파입니다.
- FRGB는 미리 곱하지 않은 소스 색입니다.
- FA는 원본 알파입니다.
- f(SRGB, DRGB)는 혼합 모드마다 다른 혼합 함수입니다.
일부 혼합 모드에서는 색조, 채도, 광도(HSL) 색 공간을 RGB로 변환해야 합니다.
열거형 | 수식 |
---|---|
D2D1_BLEND_MODE_DARKEN | 알파 전용 기본 혼합 수식입니다. |
D2D1_BLEND_MODE_MULTIPLY | 알파 전용 기본 혼합 수식입니다. |
D2D1_BLEND_MODE_COLOR_BURN | f(FRGB, BRGB)를 사용하는 기본 혼합 수식 = |
D2D1_BLEND_MODE_LINEAR_BURN | f(FRGB, BRGB)를 사용하는 기본 혼합 수식 = |
D2D1_BLEND_MODE_DARKER_COLOR | 알파 전용 기본 혼합 수식입니다. |
D2D1_BLEND_MODE_LIGHTEN | 알파 전용 기본 혼합 수식입니다. |
D2D1_BLEND_MODE_SCREEN | 알파 전용 기본 혼합 수식입니다. |
D2D1_BLEND_MODE_COLOR_DODGE | f(FRGB, BRGB)를 사용하는 기본 혼합 수식 = |
D2D1_BLEND_MODE_LINEAR_DODGE | f(FRGB, BRGB)를 사용하는 기본 혼합 수식 = |
D2D1_BLEND_MODE_LIGHTER_COLOR | 알파 전용 기본 혼합 수식입니다. |
D2D1_BLEND_MODE_OVERLAY | f(FRGB, BRGB)를 사용하는 기본 혼합 수식 = |
D2D1_BLEND_MODE_SOFT_LIGHT | f(FRGB, BRGB)를 사용하는 기본 혼합 수식 = |
D2D1_BLEND_MODE_HARD_LIGHT | f(FRGB, BRGB)를 사용하는 기본 혼합 수식 = |
D2D1_BLEND_MODE_VIVID_LIGHT | f(FRGB, BRGB)를 사용하는 기본 혼합 수식 = |
D2D1_BLEND_MODE_LINEAR_LIGHT | f(FRGB, BRGB)를 사용하는 기본 혼합 수식 = |
D2D1_BLEND_MODE_PIN_LIGHT | f(FRGB, BRGB)를 사용하는 기본 혼합 수식 = |
D2D1_BLEND_MODE_HARD_MIX | f(FRGB, BRGB)를 사용하는 기본 혼합 수식 = |
D2D1_BLEND_MODE_DIFFERENCE | f(FRGB, BRGB)를 사용하는 기본 혼합 수식 = abs(FRGB - BRGB) |
D2D1_BLEND_MODE_EXCLUSION | f(FRGB, BRGB)를 사용하는 기본 혼합 수식 = FRGB + BRGB 2 * FRGB * BRGB |
D2D1_BLEND_MODE_HUE | 알파 전용 기본 혼합 수식입니다. |
D2D1_BLEND_MODE_SATURATION | 알파 전용 기본 혼합 수식입니다. |
D2D1_BLEND_MODE_COLOR | 알파 전용 기본 혼합 수식입니다. |
D2D1_BLEND_MODE_LUMINOSITY | 알파 전용 기본 혼합 수식입니다. |
D2D1_BLEND_MODE_DISSOLVE | 지정된 조건:
|
D2D1_BLEND_MODE_SUBTRACT | 알파 전용 기본 혼합 수식입니다. |
D2D1_BLEND_MODE_DIVISION | 알파 전용 기본 혼합 수식입니다. |
참고 항목
모든 혼합 모드에서 출력 값은 미리 곱해져 [0, 1] 범위로 고정됩니다.
HSL 색 공간 변환
광도 구성 요소는 RGB 가중치를 사용하여 계산됩니다.
- kR = 0.30
- kG = 0.59
- kB = 0.11
RGB에서 HSL로 변환
이렇게 하면 S 및 L은 [0.0, 1.0] 범위에 배치되고 H는 [-1.0, 5.0] 범위에 배치됩니다.
HSL에서 RGB로 변환
다른 방법으로 변환하려면 이전 계산의 역방향을 사용합니다.
S = 0이면 R = G = B = L입니다.
그렇지 않으면 6가지 색조에 따라 달라집니다.
H가 0보다 크면 R>B>G가 있는 레드/자홍 섹터의 값입니다.
H가 0보다 크거나 1보다 작으면 R>G>B가 있는 레드/노란색 섹터에 값이 있습니다.
H가 1보다 크고 2보다 작으면 G>R>B가 있는 노란색/녹색 섹터에 값이 있습니다.
H가 2보다 크고 3보다 작으면 G>B>R이 있는 녹색/녹청 섹터의 값입니다.
H가 3보다 크고 4보다 작으면 B>G>R이 있는 녹청/파란색 섹터의 값입니다.
H가 4보다 크거나 같으면 B>R>G가 있는 파란색/자홍 섹터의 값입니다.
혼합 모드는 서로 다른 두 가지 색상의 HSL 구성 요소를 임의로 조합하기 때문에 변환된 RGB 값이 색 영역을 벗어나는, 즉 하나 이상의 채널 구성 요소가 법적 범위인 [0.0, 1.0]을 벗어날 수 있는 경우가 흔합니다. 이러한 색상은 채도를 최소화하면서 색상과 광도를 모두 유지하면서 영역으로 다시 가져옵니다.
출력 비트맵
이 효과의 출력 비트맵은 항상 두 입력 이미지의 합친 크기입니다.
샘플 코드
이 효과의 예시를 보려면 Direct2D 합성 효과 모드 샘플을 다운로드하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 7용 Windows 8 및 플랫폼 업데이트 [데스크톱 앱 | Windows 스토어 앱] |
지원되는 최소 서버 | Windows 7용 Windows 8 및 플랫폼 업데이트 [데스크톱 앱 | Windows 스토어 앱] |
헤더 | d2d1effects.h |
라이브러리 | d2d1.lib, dxguid.lib |