AlphaBlend

アルファとは画像処理の世界で、ピクセルの色に一定の数値を掛け、画像全体を「薄く」「霧のかかった」状態に見せることをいいます。

AlphaBlend 関数では、BLENDFUNCTION という構造体をとり、アルファは 0x0 から 0xff までの値をとります。0xff で、画像そのままの状態を、アルファの値が少なければより薄い画像になります。

ここでは、CImage を一定のアルファ値で、CDC のコンテキストに書き込むコードを示します。

void CPhotoDialog::DrawOpaque(CDC* pDC, CImage* pImage, int alpha)
   {
	CDC *pImageDC=CDC::FromHandle(pImage->GetDC());

	int imageWidth=pImage->GetWidth();
	int imageHeight=pImage->GetHeight();

	CBrush brush(RGB(255,255,255));
	pDC->FillRect(CRect(0,0,imageWidth,imageHeight),&brush);

	BLENDFUNCTION bf;
	bf.AlphaFormat = 0;
	bf.BlendFlags = 0;
	bf.BlendOp = AC_SRC_OVER;
	bf.SourceConstantAlpha = alpha;

	pDC->AlphaBlend(0, 0, imageWidth, imageHeight, pImageDC, 0, 0, imageWidth, imageHeight, bf);

	pImage->ReleaseDC();
   }
inserted by FC2 system