2D 아핀 변형 효과

2D 아핀 변환 효과는 Direct2D 매트릭스 변환과 6가지 보간 모드 중 하나를 사용하여 3X2 매트릭스를 기반으로 이미지에 공간 변환을 적용합니다. 이 효과를 사용하여 이미지를 회전, 크기 조정, 기울이기 또는 변환할 수 있습니다. 또는 이러한 작업을 결합할 수도 있습니다. 아핀 전송은 평행선과 이미지의 세 점 사이의 거리 비율을 보존합니다.

이 효과에 대한 CLSID는 CLSID_D2D12DAffineTransform입니다.

예시 이미지

이전
효과를 적용하기 전의 이미지.
이후
변환 후의 이미지.
ComPtr<ID2D1Effect> affineTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D12DAffineTransform, &affineTransformEffect);

affineTransformEffect->SetInput(0, bitmap);

D2D1_MATRIX_3X2_F matrix = D2D1::Matrix3x2F(0.9f, -0.1f,   0.1f, 0.9f,   8.0f, 45.0f);

affineTransformEffect->SetValue(D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX, matrix);

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

이 효과는 다음 행렬 작업을 수행합니다.

아핀 행렬 연산

입력 행렬은 3x2 행렬로 정의되지만, 마지막 열은 0, 0, 1로 패딩되어 정사각형 행렬을 생성합니다. 이를 통해 행렬 곱셈이 가능하므로 변환을 단일 행렬로 연결할 수 있습니다.

효과 속성

표시 이름 및 인덱스 열거형 설명
InterpolationMode
D2D1_2DAFFINETRANSFORM_PROP_INTERPOLATION_MODE
이미지 크기를 조정하는 데 사용되는 보간 모드입니다. 품질과 속도에 따라 6가지 스케일 모드가 있습니다.
형식은 D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE입니다.
기본값은 D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR입니다.
BorderMode
D2D1_2DAFFINETRANSFORM_PROP_BORDER_MODE
이미지의 테두리(소프트 또는 하드)를 계산하는 데 사용되는 모드입니다. 자세한 내용은 테두리 모드를 참조하세요.
형식은 D2D1_BORDER_MODE입니다.
기본값은 D2D1_BORDER_MODE_SOFT입니다.
TransformMatrix
D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX
3x2 행렬은 Direct2D 행렬 변환을 사용하여 이미지를 변환합니다.
형식은 D2D1_MATRIX_3X2_F입니다.
기본값은 Matrix3x2F::Identity()입니다.
선명도
D2D1_2DAFFINETRANSFORM_PROP_SHARPNESS
고품질 입방 보간 모드에서는 스케일링 필터의 선명도 수준을 0과 1 사이의 부동 소수점으로 지정합니다. 값에는 단위가 없습니다. 선명도를 사용하여 이미지 크기를 조정할 때 이미지의 품질을 조정할 수 있습니다.
선명도 계수는 커널의 모양에 영향을 줍니다. 선명도 인수가 높을수록 커널이 작습니다.
참고: 이 속성은 고품질 입방 보간 모드에만 영향을 줍니다.
형식은 부동입니다.
기본값은 0.0f입니다.

테두리 모드

이름 설명
D2D1_BORDER_MODE_SOFT 이 효과는 보간할 때 이미지를 투명한 검정색 픽셀로 패딩하여 부드러운 가장자리를 만듭니다.
D2D1_BORDER_MODE_HARD 이 효과는 출력을 입력 이미지 크기로 고정합니다.

보간 모드

열거형 설명
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR 가장 가까운 단일 점을 샘플링하고 사용합니다. 이 모드는 처리 시간을 줄이지만 가장 낮은 품질의 이미지를 출력합니다.
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR 4점 샘플 및 선형 보간을 사용합니다. 이 모드는 가장 인접한 항목 모드보다 처리 시간이 더 많이 걸리지만 더 높은 품질의 이미지를 출력합니다.
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_CUBIC 보간을 위해 16 샘플 입방 커널을 사용합니다. 이 모드는 처리 시간이 가장 많이 걸리지만 더 높은 품질의 이미지를 출력합니다.
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR 단일 픽셀 내에서 4개의 선형 샘플을 사용하여 우수한 가장자리 앤티앨리어싱을 구현합니다. 이 모드는 픽셀 수가 적은 이미지의 크기를 조금씩 축소할 때 유용합니다.
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_ANISOTROPIC 이방성 필터링을 사용하여 비트맵의 변형된 모양에 따라 패턴을 샘플링합니다.
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC 변환 행렬에 다운스케일링이 포함된 경우 가변 크기 고품질 입방 커널을 사용하여 이미지의 사전 다운스케일링을 수행합니다. 그런 다음 최종 출력에 입방 보간 모드를 사용합니다.

참고 항목

모드를 선택하지 않으면 효과의 기본값은 D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR입니다.

참고 항목

이방성 모드는 크기를 조정할 때 밉맵을 생성하지만, 이 효과에 입력된 효과에 대해 캐시 속성을 True로 설정하면 충분히 작은 이미지의 경우 매번 밉맵이 생성되지 않습니다.

출력 비트맵

출력 비트맵의 크기는 이미지에 적용되는 변환 행렬에 따라 달라집니다.

이 효과는 변환 작업을 수행한 후 결과 주위에 경계 상자를 적용합니다. 출력 비트맵은 경계 상자의 크기입니다.

요구 사항

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

ID2D1Effect