다음을 통해 공유


비트맵 소스 효과

비트맵 소스 효과를 사용하여 효과 그래프의 입력으로 사용할 IWICBitmapSourceID2D1Image 생성합니다. 이 효과는 CPU에서 크기 조정 및 회전을 수행합니다. 또한 필요에 따라 시스템 메모리 밉맵을 생성할 수 있으며, 이는 다양한 축소된 해상도에서 매우 큰 이미지를 적극적으로 크기 조정하기 위한 성능 최적화가 될 수 있습니다.

메모

비트맵 소스 효과는 해당 입력을 이미지 입력이 아닌 속성으로 사용합니다. SetInput 메서드가 아닌 SetValue 메서드를 사용해야 합니다. WicBitmapSource 속성은 이미지 입력 데이터를 지정하는 위치입니다.

이 효과에 대한 CLSID는 CLSID_D2D1BitmapSource.

효과 속성

표시 이름 및 인덱스 열거형 묘사
WicBitmapSource
D2D1_BITMAPSOURCE_PROP_WIC_BITMAP_SOURCE
IWICBitmapSource는 로드할 이미지 데이터를 포함하는.
형식은 IWICBitmapSource .
기본값은 NULL입니다.
저울
D2D1_BITMAPSOURCE_PROP_SCALE
X 및 Y 방향의 배율 크기입니다. 이 효과는 너비를 X 값으로 곱하고 높이를 Y 값으로 곱합니다. 이 속성은 다음과 같이 정의된 D2D1_VECTOR_2F(X 배율, Y 배율)입니다. 배율 크기는 FLOAT이고 단위가 없으며 양수 또는 0이어야 합니다.
형식이 D2D1_VECTOR_2F.
기본값은 {1.0f, 1.0f}입니다.
InterpolationMode.
D2D1_BITMAPSOURCE_PROP_INTERPOLATION_MODE
이미지 크기를 조정하는 데 사용되는 보간 모드입니다. 자세한 내용은 보간 모드 참조하세요.
모드에서 mipmap을 사용하지 않도록 설정하면 BitmapSouce는 Scale 및 EnableDPICorrection 속성에 의해 결정되는 해상도로 이미지를 캐시합니다.
형식이 D2D1_BITMAPSOURCE_INTERPOLATION_MODE.
기본값은 D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR.
EnableDPICorrection
D2D1_BITMAPSOURCE_PROP_ENABLE_DPI_CORRECTION
이 값을 TRUE로 설정하면 입력 이미지의 크기가 조정되어 IWICBitmapSource 보고한 DPI를 디바이스 컨텍스트의 DPI로 변환합니다. 이 효과는 InterpolationMode 속성으로 설정한 보간 모드를 사용합니다. 이 값을 FALSE로 설정하면 출력 이미지에 96.0의 DPI가 사용됩니다.
BOOL 유형입니다.
기본값은 FALSE입니다.
AlphaMode
D2D1_BITMAPSOURCE_PROP_ALPHA_MODE
출력의 알파 모드입니다. 미리 곱하거나 직선으로 만들 수 있습니다. 자세한 내용은 알파 모드 참조하세요.
형식이 D2D1_BITMAPSOURCE_ALPHA_MODE.
기본값은 D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED.
방향
D2D1_BITMAPSOURCE_PROP_ORIENTATION
이미지에서 수행할 대칭 이동 및/또는 회전 작업입니다. 자세한 내용은 방향 참조하세요.
형식이 D2D1_BITMAPSOURCE_ORIENTATION.
기본값은 D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT.

보간 모드

효과는 이미지의 크기를 조정하거나 DPI를 수정할 때 이 모드를 사용하여 보간됩니다. 이 효과에서 사용하는 보간 모드는 GPU가 아닌 CPU에 의해 계산됩니다.

이름 묘사
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_NEAREST_NEIGHBOR 가장 가까운 단일 지점을 샘플링하고 사용합니다. Mipmap을 생성하지 않습니다.
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR 4포인트 샘플 및 선형 보간을 사용합니다. Mipmap을 생성하지 않습니다.
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_CUBIC 보간을 위해 16 샘플 입방 커널을 사용합니다. Mipmap을 생성하지 않습니다.
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_FANT IWICBitmapScaler 인터페이스와 동일한 WIC 팬트 보간을 사용합니다. Mipmap을 생성하지 않습니다.
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_MIPMAP_LINEAR 쌍선형 보간을 사용하여 시스템 메모리에 mipmap 체인을 생성합니다. 각 mipmap에 대해 효과는 선형 보간을 사용하여 0.5의 가장 가까운 배수로 확장한 다음 선형 보간을 사용하여 나머지 양을 배율 조정합니다.

방향

Orientation 속성을 사용하여 이미지 내에 포함된 EXIF 방향 플래그를 적용할 수 있습니다.

이름 묘사
D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT 기본값. 효과는 입력의 방향을 변경하지 않습니다.
D2D1_BITMAPSOURCE_ORIENTATION_FLIP_HORIZONTAL 이미지를 가로로 대칭 이동합니다.
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180 이미지를 시계 방향으로 180도 회전합니다.
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180_FLIP_HORIZONTAL 이미지를 시계 방향으로 180도 회전하고 가로로 대칭 이동합니다.
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270_FLIP_HORIZONTAL 이미지를 시계 방향으로 270도 회전하고 가로로 대칭 이동합니다.
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90 이미지를 시계 방향으로 90도 회전합니다.
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90_FLIP_HORIZONTAL 이미지를 시계 방향으로 90도 회전하고 가로로 대칭 이동합니다.
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270 이미지를 시계 방향으로 270도 회전합니다.

이 코드 조각은 EXIF 방향 값(propkey.h에 정의됨)에서 D2D1_BITMAPSOURCE_ORIENTATION 값으로 변환하는 방법을 보여 줍니다.

#include <propkey.h>
#include <d2d1effects.h>

D2D1_BITMAPSOURCE_ORIENTATION GetBitmapSourceOrientation(unsigned short PhotoOrientation)
{
       switch (PhotoOrientation)
       {
       case PHOTO_ORIENTATION_NORMAL:
              return D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT;
       case PHOTO_ORIENTATION_FLIPHORIZONTAL:
              return D2D1_BITMAPSOURCE_ORIENTATION_FLIP_HORIZONTAL;
       case PHOTO_ORIENTATION_ROTATE180:
              return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180;
       case PHOTO_ORIENTATION_FLIPVERTICAL:
              return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180_FLIP_HORIZONTAL;
       case PHOTO_ORIENTATION_TRANSPOSE: 
              return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90_FLIP_HORIZONTAL;
       case PHOTO_ORIENTATION_ROTATE270:
              return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90;
       case PHOTO_ORIENTATION_TRANSVERSE:
              return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270_FLIP_HORIZONTAL;
       case PHOTO_ORIENTATION_ROTATE90:
              return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270;
       default:
              return D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT;
       }
}

알파 모드

이름 묘사
D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED 효과 출력은 미리 곱한 알파를 사용합니다.
D2D1_BITMAPSOURCE_ALPHA_MODE_STRAIGHT 효과 출력은 직선 알파를 사용합니다.

발언

WIC 및 Direct2D 함께 사용할 때 성능을 최적화하려면 IWICFormatConverter 사용하여 앱 시나리오 및 이미지의 네이티브 정밀도를 기반으로 적절한 픽셀 형식으로 변환해야 합니다.

대부분의 경우 앱의 Direct2D 파이프라인에는 채널당 8비트(bpc)의 정밀도만 필요하거나 이미지는 8bpc 정밀도만 제공하므로 GUID_WICPixelFormat32bppPBGRA 변환해야 합니다. 그러나 이미지에서 제공하는 추가 정밀도(예: 8 bpc 정밀도보다 큰 JPEG-XR 또는 TIFF)를 활용하려면 RGBA 기반 픽셀 형식을 사용해야 합니다. 아래 표에서는 자세한 내용을 제공합니다.

원하는 정밀도 이미지의 네이티브 정밀도 권장 픽셀 형식
채널당 8비트 <= 채널당 8비트 GUID_WICPixelFormat32bppPBGRA
가능한 한 높음 <= 채널당 8비트 GUID_WICPixelFormat32bppPBGRA
가능한 한 높음 채널당 8비트 > RGBA 채널 순서, 미리 곱한 알파

많은 이미지 형식이 여러 수준의 정밀도를 지원하므로 IWICBitmapSource::GetPixelFormat 사용하여 이미지의 네이티브 픽셀 형식을 가져온 다음 IWICPixelFormatInfo 사용하여 해당 형식에 사용할 수 있는 전체 자릿수 채널당 비트 수를 결정해야 합니다. 또한 모든 하드웨어가 높은 정밀도 픽셀 형식을 지원하는 것은 아닙니다. 이러한 경우 앱은 높은 정밀도를 지원하기 위해 WARP 디바이스로 대체해야 할 수 있습니다.

요구 사항

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

ID2D1Effect