다음을 통해 공유


색 매트릭스를 사용하여 이미지에서 알파 값 설정

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%로 변환됩니다. 그러면 배경과 혼합된 이미지가 생성됩니다. 다음 그림과 같이, 비트맵 이미지는 투명해 보입니다. 이를 통해 검은 실선을 볼 수 있습니다.

이전 그림과 비슷하지만 이미지는 sem 투명입니다.

이미지가 배경의 흰색 부분 위에 있는 경우 이미지는 흰색과 혼합되었습니다. 이미지가 검은색 선과 교차하는 경우 이미지는 검은색과 혼합됩니다.