다음을 통해 공유


그림자 효과

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

이 효과에 대한 CLSID는 CLSID_D2D1Shadow.

예제 이미지

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

전에
효과 앞에 이미지를 .
변환 후 이미지를 .
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입니다.
이 속성은 Gaussian Blur 표준 편차 속성과 동일합니다.
FLOAT 형식입니다.
기본값은 3.0f입니다.

D2D1_SHADOW_PROP_COLOR
그림자의 색입니다. 이 속성은 다음과 같이 정의된 D2D1_VECTOR_4F(R, G, B, A)입니다. 이 색을 직선 알파로 지정해야 합니다.
형식이 D2D1_VECTOR_4F.
기본값은 {0.0f, 0.0f, 0.0f, 1.0f}입니다.
최적화
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