ImageAttributes::SetRemapTable 메서드(gdiplusimageattributes.h)
ImageAttributes::SetRemapTable 메서드는 지정된 범주에 대한 색 다시 매핑 테이블을 설정합니다.
구문
Status SetRemapTable(
[in] UINT mapSize,
[in] const ColorMap *map,
[in, optional] ColorAdjustType type
);
매개 변수
[in] mapSize
형식: UINT
지도 배열의 요소 수를 지정하는 INT입니다.
[in] map
형식: const ColorMap*
색 맵을 정의하는 ColorMap 구조체의 배열에 대한 포인터입니다.
[in, optional] type
형식: ColorAdjustType
색 다시 매핑 테이블이 설정된 범주를 지정하는 ColorAdjustType 열거형의 요소입니다. 기본값은 ColorAdjustTypeDefault입니다.
반환 값
형식: 상태
메서드가 성공하면 Status 열거형의 요소인 Ok를 반환합니다.
메서드가 실패하면 Status 열거형의 다른 요소 중 하나를 반환합니다.
설명
색 다시 매핑 테이블은 ColorMap 구조체의 배열입니다. 각 ColorMap 구조에는 두 개의 Color 개체가 있습니다. 하나는 이전 색을 지정하고 다른 하나는 해당 새 색을 지정합니다. 렌더링하는 동안 다시 매핑 테이블의 이전 색 중 하나와 일치하는 모든 색이 해당 새 색으로 변경됩니다.
ImageAttributes 개체는 기본, 비트맵, 브러시, 펜 및 텍스트의 다섯 가지 조정 범주에 대한 색 및 회색조 설정을 유지 관리합니다. 예를 들어 기본 범주에 대한 색 다시 매핑, 비트맵 범주에 대한 색 다시 매핑 테이블, 펜 범주에 대해 다른 색 다시 매핑 테이블을 지정할 수 있습니다.
기본 색 및 회색조 조정 설정은 자체 조정 설정이 없는 모든 범주에 적용됩니다. 예를 들어 펜 범주에 대한 조정 설정을 지정하지 않으면 기본 설정이 펜 범주에 적용됩니다.
특정 범주에 대해 색 또는 회색조 조정 설정을 지정하는 즉시 기본 조정 설정이 해당 범주에 더 이상 적용되지 않습니다. 예를 들어 기본 범주에 대한 조정 설정 컬렉션을 지정한다고 가정합니다. ColorAdjustTypePen을 ImageAttributes::SetRemapTable 메서드에 전달하여 펜 범주에 대한 색 다시 매핑 테이블을 설정하는 경우 펜에 기본 조정 설정이 적용되지 않습니다.
예제
다음 예제에서는 .bmp 파일을 기반으로 Image 개체를 만든 다음 이미지를 그립니다. 이 코드는 ImageAttributes 개체를 만들고 빨간색이 파란색으로 변환되도록 기본 다시 매핑 테이블을 설정합니다. 그런 다음, 코드는 다시 매핑 테이블에 지정된 색 조정을 사용하여 이미지를 다시 그립니다.
VOID Example_SetRemapTable(HDC hdc)
{
Graphics graphics(hdc);
// Create an Image object based on a .bmp file.
// The image has one red stripe and one green stripe.
Image image(L"RedGreenStripes.bmp");
// Create an ImageAttributes object and set its remap table.
ImageAttributes imageAtt;
ColorMap cMap;
cMap.oldColor = Color(255, 255, 0, 0); // red
cMap.newColor = Color(255, 0, 0, 255); // blue
imageAtt.SetRemapTable(12, &cMap,
ColorAdjustTypeDefault);
// Draw the image with no color adjustment.
graphics.DrawImage(&image, 10, 10, image.GetWidth(), image.GetHeight());
// Draw the image with red converted to blue.
graphics.DrawImage(&image,
Rect(100, 10, image.GetWidth(), image.GetHeight()), // dest rect
0, 0, image.GetWidth(), image.GetHeight(), // source rect
UnitPixel,
&imageAtt);
}
다음 그림에서는 이전 코드의 출력을 보여 줍니다.
요구 사항
지원되는 최소 클라이언트 | Windows XP, Windows 2000 Professional [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | gdiplusimageattributes.h(Gdiplus.h 포함) |
라이브러리 | Gdiplus.lib |
DLL | Gdiplus.dll |