산술 복합 효과
산술 복합 효과를 사용하여 입력 이미지의 가중치 픽셀 합계를 사용하여 2개의 이미지를 결합합니다.
이 효과에 대한 CLSID는 CLSID_D2D1ArithmeticComposite.
Formula
이 수식은 이 효과를 계산하는 데 사용됩니다.
출력rgba = C1 * Sourcergba * Destinationrgba + C2 * Sourcergba + C3 * Destinationrgba + C4
여기서 C1, C2, C3, C4는 설정한 계수입니다.
계수는 D2D1_VECTOR_4F(x, y, z, w)의 값에 매핑됩니다.
- x = C1
- y = C2
- z = C3
- w = C4
예제 이미지
간단한 예는 원본 및 대상 픽셀을 추가하는 것입니다. 이 예제에서는 2개의 둥근 사각형이 함께 복합됩니다. 원본 사각형은 파란색이고 대상은 빨간색입니다.
여기에 있는 이미지는 수식 계수가 여기에 있는 값으로 설정된 산술 복합 효과의 출력입니다.
- C1 = 0
- C2 = 1
- C3 = 1
- C4 = 0
그 결과 원본 및 대상의 픽셀 값이 추가됩니다. 사각형이 RGBA 값과 겹치지 않는 지역은 모두 0입니다. 사각형이 겹치는 경우 R 값과 B 값이 모두 최대이므로 색은 magenta입니다.
코드가 있는 또 다른 예제 이미지는 다음과 같습니다.
이미지 1 이전 |
---|
이미지 2 이전 |
After |
ComPtr<ID2D1Effect> arithmeticCompositeEffect;
m_d2dContext->CreateEffect(CLSID_D2D1ArithmeticComposite, &arithmeticCompositeEffect);
arithmeticCompositeEffect->SetInput(0, bitmap);
arithmeticCompositeEffect->SetInput(1, bitmapTwo);
arithmeticCompositeEffect->SetValue(D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS, D2D1::Vector4F(0.0f, 0.5f, 0.5f, 0.0f));
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(arithmeticCompositeEffect.Get());
m_d2dContext->EndDraw();
효과 속성
표시 이름 및 인덱스 열거형 | Description |
---|---|
계수 D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS |
두 입력 이미지를 합성하는 데 사용되는 수식의 계수입니다. 계수는 단위가 없고 바인딩되지 않습니다. 형식이 D2D1_VECTOR_4F. 기본값은 {1.0f, 0.0f, 0.0f, 0.0f}입니다. |
ClampOutput D2D1_ARITHMETICCOMPOSITE_PROP_CLAMP_OUTPUT |
효과는 효과가 그래프의 다음 효과에 값을 전달하기 전에 색 값을 0에서 1 사이로 고정합니다. 이 값을 TRUE로 설정하면 효과가 값을 고정합니다. FALSE로 설정하면 효과는 색 값을 고정하지 않지만, 다른 효과와 출력 표면이 충분히 높은 정밀도를 없으면 값을 고정할 수 있습니다. BOOL 유형입니다. 기본값은 FALSE입니다. |
출력 비트맵
출력 비트맵은 계수 값에 따라 달라집니다. 가능한 출력 비트맵 크기입니다.
- C1이 0이 아닌 유일한 계수인 경우 출력 크기는 입력 사각형의 교집합입니다.
- C2가 0이 아닌 유일한 계수인 경우 출력 크기는 원본 사각형의 크기입니다.
- C3이 0이 아닌 유일한 계수인 경우 출력 크기는 대상 사각형의 크기입니다.
- 모든 계수가 0이면 출력 크기는 빈 사각형입니다.
- 다른 모든 계수 값의 경우 출력 크기는 입력 사각형의 공용 구조체입니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 7용 Windows 8 및 플랫폼 업데이트 [데스크톱 앱 | Windows 스토어 앱] |
지원되는 최소 서버 | Windows 7용 Windows 8 및 플랫폼 업데이트 [데스크톱 앱 | Windows 스토어 앱] |
헤더 | d2d1effects.h |
라이브러리 | d2d1.lib, dxguid.lib |