다음을 통해 공유


그림자 효과

그림자 효과를 사용하여 이미지의 알파 채널에서 그림자를 생성합니다. 그림자는 알파 값이 높을수록 불투명하고 알파 값이 낮을수록 투명합니다. 흐림 효과의 양과 그림자의 색을 설정할 수 있습니다.

이 효과에 대한 CLSID는 CLSID_D2D1Shadow.

예제 이미지

이 예제에서는 원본 이미지가 원래 위치에 합성된 상태에서 아래쪽과 오른쪽으로 변환된 그림자 효과의 출력을 보여 둡니다. 그림자 효과는 그림자만 출력합니다.

이전
효과 앞의 이미지입니다.
After
변환 후의 이미지입니다.
ComPtr<ID2D1Effect> shadowEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Shadow, &shadowEffect);

shadowEffect->SetInput(0, bitmap);

// Shadow is composited on top of a white surface to show opacity.
ComPtr<ID2D1Effect> floodEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Flood, &floodEffect);

floodEffect->SetValue(D2D1_FLOOD_PROP_COLOR, D2D1::Vector4F(1.0f, 1.0f, 1.0f, 1.0f));

ComPtr<ID2D1Effect> affineTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D12DAffineTransform, &affineTransformEffect);

affineTransformEffect->SetInputEffect(0, shadowEffect.Get());

D2D1_MATRIX_3X2_F matrix = D2D1::Matrix3x2F::Translation(20, 20));

affineTransformEffect->SetValue(D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX, matrix);

ComPtr<ID2D1Effect> compositeEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Composite, &compositeEffect);

compositeEffect->SetInputEffect(0, floodEffect.Get());
compositeEffect->SetInputEffect(1, affineTransformEffect.Get());
compositeEffect->SetInput(2, bitmap);

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(compositeEffect.Get());
m_d2dContext->EndDraw();

효과 속성

표시 이름 및 인덱스 열거형 설명
BlurStandardDeviation
D2D1_SHADOW_PROP_BLUR_STANDARD_DEVIATION
이미지의 알파 채널에 적용할 흐림의 양입니다. 표준 편차를 3으로 곱하여 커널의 흐림 반경을 계산할 수 있습니다. 표준 편차와 흐림 반경의 단위는 모두 DIP입니다.
이 속성은 가우스 흐림 표준 편차 속성과 동일합니다.
FLOAT 형식입니다.
기본값은 3.0f입니다.
색상
D2D1_SHADOW_PROP_COLOR
그림자 색입니다. 이 속성은 (R, G, B, A)로 정의된 D2D1_VECTOR_4F. 이 색은 직선 알파로 지정해야 합니다.
형식이 D2D1_VECTOR_4F.
기본값은 {0.0f, 0.0f, 0.0f, 1.0f}입니다.
Optimization
D2D1_SHADOW_PROP_OPTIMIZATION
성능 최적화 수준입니다.
형식이 D2D1_SHADOW_OPTIMIZATION.
기본값은 D2D1_SHADOW_OPTIMIZATION_BALANCED.

최적화 모드

속성 설명
D2D1_DIRECTIONALBLUR_OPTIMIZATION_SPEED 비교적 작은 반경에서의 사전 크기 조정과 같은 내부 최적화를 적용합니다. 선형 필터링을 사용합니다.
D2D1_DIRECTIONALBLUR_OPTIMIZATION_BALANCED 속도 모드와 동일한 최적화 임계값을 사용하지만 삼선형 필터링을 사용합니다.
D2D1_DIRECTIONALBLUR_OPTIMIZATION_QUALITY 근사값이 표시될 가능성이 적은 큰 흐림 반경이 있는 내부 최적화만 사용합니다. 삼선형 필터링을 사용합니다.

출력 비트맵

출력 비트맵의 크기는 흐림 출력의 크기입니다. 다음 수식을 사용하여 원래 비트맵을 기준으로 출력 비트맵 증가량을 계산할 수 있습니다.

출력 비트맵 증가(X 및 Y) = BlurStandardDeviation(디바이스 독립적 픽셀(DIP))*6*(사용자 DPI)/96

출력은 모든 방향으로 동일하게 증가하므로 예를 들어 크기가 각 방향에서 10픽셀씩 증가하는 경우 비트맵의 왼쪽 위 모서리는 (-5, -5)에 있고 오른쪽 아래는 여기 다이어그램과 같이 (105, 105)에 있습니다.

그림자 효과 출력 크기 증가 다이어그램.

요구 사항

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

ID2D1Effect