다음을 통해 공유


블렌드 효과

혼합 효과를 사용하여 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 지정된 조건:
  • 현재 픽셀의 장면 좌표 XY
  • 시드 좌표 XY를 기반으로 하는 결정적 의사 난수 생성기로, [0, 1] 값의 편향되지 않은 분포를 갖습니다.

디졸브 혼합 효과에 대한 수학 수식입니다.
D2D1_BLEND_MODE_SUBTRACT 알파 전용 기본 혼합 수식입니다. 빼기 혼합 효과에 대한 수학 수식입니다.
D2D1_BLEND_MODE_DIVISION 알파 전용 기본 혼합 수식입니다. 나눗셈 혼합 효과에 대한 수학 수식입니다.

참고 항목

모든 혼합 모드에서 출력 값은 미리 곱해져 [0, 1] 범위로 고정됩니다.

HSL 색 공간 변환

광도 구성 요소는 RGB 가중치를 사용하여 계산됩니다.

  • kR = 0.30
  • kG = 0.59
  • kB = 0.11

RGB에서 HSL로 변환

rgb 색에서 hsl 색으로의 변환을 설명하는 수학 수식입니다.

이렇게 하면 SL은 [0.0, 1.0] 범위에 배치되고 H는 [-1.0, 5.0] 범위에 배치됩니다.

HSL에서 RGB로 변환

다른 방법으로 변환하려면 이전 계산의 역방향을 사용합니다.

S = 0이면 R = G = B = L입니다.

그렇지 않으면 6가지 색조에 따라 달라집니다.

H가 0보다 크면 R>B>G가 있는 레드/자홍 섹터의 값입니다.

6단계 중 1단계인 수학적 방정식을 통해 HSL 색을 RGB로 변환합니다.

H가 0보다 크거나 1보다 작으면 R>G>B가 있는 레드/노란색 섹터에 값이 있습니다.

6단계 중 2단계인 수학적 방정식을 통해 HSL 색을 RGB로 변환합니다.

H가 1보다 크고 2보다 작으면 G>R>B가 있는 노란색/녹색 섹터에 값이 있습니다.

6단계 중 3단계인 수학적 방정식을 통해 HSL 색을 RGB로 변환합니다.

H가 2보다 크고 3보다 작으면 G>B>R이 있는 녹색/녹청 섹터의 값입니다.

6단계 중 4단계인 수학적 방정식을 통해 HSL 색을 RGB로 변환합니다.

H가 3보다 크고 4보다 작으면 B>G>R이 있는 녹청/파란색 섹터의 값입니다.

6단계 중 5단계인 수학적 방정식을 통해 HSL 색을 RGB로 변환합니다.

H가 4보다 크거나 같으면 B>R>G가 있는 파란색/자홍 섹터의 값입니다.

6단계 중 6단계인 수학적 방정식을 통해 HSL 색을 RGB로 변환합니다.

혼합 모드는 서로 다른 두 가지 색상의 HSL 구성 요소를 임의로 조합하기 때문에 변환된 RGB 값이 색 영역을 벗어나는, 즉 하나 이상의 채널 구성 요소가 법적 범위인 [0.0, 1.0]을 벗어날 수 있는 경우가 흔합니다. 이러한 색상은 채도를 최소화하면서 색상과 광도를 모두 유지하면서 영역으로 다시 가져옵니다.

범위를 벗어난 인스턴스에 필요한 보정을 설명하는 수학 수식입니다.

출력 비트맵

이 효과의 출력 비트맵은 항상 두 입력 이미지의 합친 크기입니다.

샘플 코드

이 효과의 예시를 보려면 Direct2D 합성 효과 모드 샘플을 다운로드하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7용 Windows 8 및 플랫폼 업데이트 [데스크톱 앱 | Windows 스토어 앱]
지원되는 최소 서버 Windows 7용 Windows 8 및 플랫폼 업데이트 [데스크톱 앱 | Windows 스토어 앱]
헤더 d2d1effects.h
라이브러리 d2d1.lib, dxguid.lib

ID2D1Effect