다음을 통해 공유


BLENDFUNCTION 구조체(wingdi.h)

BLENDFUNCTION 구조체는 원본 및 대상 비트맵에 대한 혼합 함수를 지정하여 혼합을 제어합니다.

구문

typedef struct _BLENDFUNCTION {
  BYTE BlendOp;
  BYTE BlendFlags;
  BYTE SourceConstantAlpha;
  BYTE AlphaFormat;
} BLENDFUNCTION, *PBLENDFUNCTION;

멤버

BlendOp

소스 혼합 작업입니다. 현재 정의된 유일한 원본 및 대상 혼합 작업은 AC_SRC_OVER. 자세한 내용은 다음 주의 섹션을 참조하세요.

BlendFlags

0이어야 합니다.

SourceConstantAlpha

전체 원본 비트맵에서 사용할 알파 투명도 값을 지정합니다. SourceConstantAlpha 값은 원본 비트맵의 픽셀당 알파 값과 결합됩니다. SourceConstantAlpha를 0으로 설정하면 이미지가 투명한 것으로 간주됩니다. 픽셀당 알파 값만 사용하려는 경우 SourceConstantAlpha 값을 255(불투명)로 설정합니다.

AlphaFormat

이 멤버는 원본 및 대상 비트맵이 해석되는 방식을 제어합니다. AlphaFormat 에는 다음 값이 있습니다.

의미
AC_SRC_ALPHA 이 플래그는 비트맵에 알파 채널(즉, 픽셀당 알파)이 있을 때 설정됩니다. API는 미리 곱한 알파를 사용합니다. 즉, 비트맵의 빨간색, 녹색 및 파란색 채널 값은 알파 채널 값으로 미리 곱해야 합니다. 예를 들어 알파 채널 값이 x이면 빨강, 녹색 및 파란색 채널을 x로 곱하고 호출 전에 0xff 나누어야 합니다.

설명

AlphaFormat 멤버가 AC_SRC_ALPHA 경우 원본 비트맵은 32bpp여야 합니다. 그렇지 않으면 AlphaBlend 함수가 실패합니다.

BlendOp 멤버가 AC_SRC_OVER 원본 비트맵은 원본 픽셀의 알파 값을 기반으로 대상 비트맵 위에 배치됩니다.

원본 비트맵에 픽셀당 알파 값이 없는 경우(즉, AC_SRC_ALPHA 설정되지 않음) SourceConstantAlpha 값은 다음 표와 같이 원본 및 대상 비트맵의 혼합을 결정합니다. SCA는 여기서 SourceConstantAlpha 에 사용됩니다. 또한 SCA는 0에서 255까지의 값이 있으므로 255로 나뉩니다.

Dst.Red = Src.Red * (SCA/255.0) + Dst.Red * (1.0 - (SCA/255.0))
Dst.Green = Src.Green * (SCA/255.0) + Dst.Green * (1.0 - (SCA/255.0))
Dst.Blue = Src.Blue * (SCA/255.0) + Dst.Blue * (1.0 - (SCA/255.0))
 

대상 비트맵에 알파 채널이 있는 경우 혼합은 다음과 같습니다.

Dst.Alpha = Src.Alpha * (SCA/255.0) + Dst.Alpha * (1.0 - (SCA/255.0))
 

원본 비트맵이 SourceConstantAlpha 를 사용하지 않는 경우(즉, 0xFF 같음) 픽셀당 알파는 다음 표와 같이 원본 및 대상 비트맵의 혼합을 결정합니다.

Dst.Red = Src.Red + (1 - Src.Alpha) * Dst.Red
Dst.Green = Src.Green + (1 - Src.Alpha) * Dst.Green
Dst.Blue = Src.Blue + (1 - Src.Alpha) * Dst.Blue
 

대상 비트맵에 알파 채널이 있는 경우 혼합은 다음과 같습니다.

Dest.alpha = Src.Alpha + (1 - SrcAlpha) * Dst.Alpha
 

원본에 SourceConstantAlpha (즉, 0xFF 아님)와 픽셀당 알파가 모두 있는 경우 원본에 SourceConstantAlpha 를 미리 곱한 다음, 혼합은 픽셀당 알파를 기반으로 합니다. 다음 표에서는 이를 보여 줍니다. SourceConstantAlpha는 0에서 255까지의 값이 있으므로 255로 나뉩니다.

Src.Red = Src.Red * SourceConstantAlpha / 255.0;
Src.Green = Src.Green * SourceConstantAlpha / 255.0;
Src.Blue = Src.Blue * SourceConstantAlpha / 255.0;
Src.Alpha = Src.Alpha * SourceConstantAlpha / 255.0;
Dst.Red = Src.Red + (1 - Src.Alpha) * Dst.Red
Dst.Green = Src.Green + (1 - Src.Alpha) * Dst.Green
Dst.Blue = Src.Blue + (1 - Src.Alpha) * Dst.Blue
Dst.Alpha = Src.Alpha + (1 - Src.Alpha) * Dst.Alpha

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
머리글 wingdi.h(Windows.h 포함)

추가 정보

AlphaBlend

비트맵 구조체

비트맵 개요