다음을 통해 공유


전단 색

전단은 다른 색 구성 요소에 비례하는 양만큼 색 구성 요소를 늘리거나 줄입니다. 예를 들어, 빨간색 구성 요소가 파란색 구성 요소 값의 1/2만큼 증가된 변환을 고려합니다. 이러한 변환에서 색상(0.2, 0.5, 1)은 (0.7, 0.5, 1)이 됩니다. 새 빨간색 구성 요소는 0.2 + (1/2)(1) = 0.7입니다.

다음 예제에서는 파일 ColorBars4.bmp Image 개체를 생성합니다. 그런 다음 코드는 선행 단락에서 설명한 전단 변환을 이미지의 각 필셀에 적용합니다.

Image            image(L"ColorBars4.bmp");
ImageAttributes  imageAttributes;
UINT             width = image.GetWidth();
UINT             height = image.GetHeight();

ColorMatrix colorMatrix = {
   1.0f, 0.0f, 0.0f, 0.0f, 0.0f,
   0.0f, 1.0f, 0.0f, 0.0f, 0.0f,
   0.5f, 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, 1.0f};
   
imageAttributes.SetColorMatrix(
   &colorMatrix, 
   ColorMatrixFlagsDefault,
   ColorAdjustTypeBitmap);
   
graphics.DrawImage(&image, 10, 10, width, height);

graphics.DrawImage(
   &image, 
   Rect(150, 10, width, height),  // destination rectangle 
   0, 0,        // upper-left corner of source rectangle 
   width,       // width of source rectangle
   height,      // height of source rectangle
   UnitPixel,
   &imageAttributes);

다음 그림에서는 왼쪽의 원본 이미지와 오른쪽의 전단 이미지를 보여 줍니다.

4가지 색 막대를 보여 주는 그림, 다른 색을 가진 동일한 막대

다음 표에서는 전단 변환 전후에 네 개의 막대에 대한 색 벡터를 보여 줍니다.

Original 전단됨
(0, 0, 1, 1) (0.5, 0, 1, 1)
(0.5, 1, 0.5, 1) (0.75, 1, 0.5, 1)
(1, 1, 0, 1) (1, 1, 0, 1)
(0.4, 0.4, 0.4, 1) (0.6, 0.4, 0.4, 1)