색 매트릭스를 사용하여 이미지에서 알파 값 설정
Bitmap 클래스(Image 클래스에서 상속됨) 및 ImageAttributes 클래스는 픽셀 값을 가져오고 설정하는 기능을 제공합니다. ImageAttributes 클래스를 사용하여 전체 이미지의 알파 값을 수정하거나 Bitmap 클래스의 Bitmap::SetPixel 메서드를 호출하여 개별 픽셀 값을 수정할 수 있습니다. 개별 픽셀 값을 설정하는 방법에 대한 자세한 내용은 개별 픽셀 의 알파 값 설정을 참조하세요.
다음 예제에서는 넓은 검은색 선을 그린 다음 해당 선의 일부를 덮는 불투명한 이미지를 표시합니다.
Bitmap bitmap(L"Texture1.jpg");
Pen pen(Color(255, 0, 0, 0), 25);
// First draw a wide black line.
graphics.DrawLine(&pen, Point(10, 35), Point(200, 35));
// Now draw an image that covers part of the black line.
graphics.DrawImage(&bitmap,
Rect(30, 0, bitmap.GetWidth(), bitmap.GetHeight()));
다음 그림에서는 (30, 0)에 그려진 결과 이미지를 보여 줍니다. 와이드 블랙 선은 이미지를 통해 표시되지 않습니다.
ImageAttributes 클래스에는 렌더링하는 동안 이미지를 수정하는 데 사용할 수 있는 많은 속성이 있습니다. 다음 예제에서는 ImageAttributes 개체를 사용하여 모든 알파 값을 해당 값의 80%로 설정합니다. 이 작업은 색 행렬을 초기화하고 행렬의 알파 스케일링 값을 0.8로 설정하여 수행됩니다. 색 행렬의 주소는 ImageAttributes 개체의 ImageAttributes::SetColorMatrix 메서드에 전달되고 ImageAttributes 개체의 주소는 Graphics 개체의 DrawImage 메서드에 전달됩니다.
// Create a Bitmap object and load it with the texture image.
Bitmap bitmap(L"Texture1.jpg");
Pen pen(Color(255, 0, 0, 0), 25);
// Initialize the color matrix.
// Notice the value 0.8 in row 4, column 4.
ColorMatrix colorMatrix = {1.0f, 0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, 0.8f, 0.0f,
0.0f, 0.0f, 0.0f, 0.0f, 1.0f};
// Create an ImageAttributes object and set its color matrix.
ImageAttributes imageAtt;
imageAtt.SetColorMatrix(&colorMatrix, ColorMatrixFlagsDefault,
ColorAdjustTypeBitmap);
// First draw a wide black line.
graphics.DrawLine(&pen, Point(10, 35), Point(200, 35));
// Now draw the semitransparent bitmap image.
INT iWidth = bitmap.GetWidth();
INT iHeight = bitmap.GetHeight();
graphics.DrawImage(
&bitmap,
Rect(30, 0, iWidth, iHeight), // Destination rectangle
0, // Source rectangle X
0, // Source rectangle Y
iWidth, // Source rectangle width
iHeight, // Source rectangle height
UnitPixel,
&imageAtt);
렌더링하는 동안 비트맵의 알파 값은 해당 값의 80%로 변환됩니다. 그러면 배경과 혼합된 이미지가 생성됩니다. 다음 그림과 같이, 비트맵 이미지는 투명해 보입니다. 이를 통해 검은 실선을 볼 수 있습니다.
이미지가 배경의 흰색 부분 위에 있는 경우 이미지는 흰색과 혼합되었습니다. 이미지가 검은색 선과 교차하는 경우 이미지는 검은색과 혼합됩니다.