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 |