マスクする

マスクをかけて、画像を書き込む方法を説明します。

CDC のドロー機能で、そのまま書くと、方形を塗りつぶします。

そこで、マスクをつくります。

ORをかけて、マスクのかかった0xffの部分を描きます。

ANDをかけて、マスクのかかっていない0x00の部分を描きます。

マスクを用意するコードを以下に示します。

        int maskWidth=100;
	int maskHeight=100;
	CRect maskRect(0,0,maskWidth,maskHeight);
	CDC *pImageDC=CDC::FromHandle(m_pImage->GetDC());
        CImage mask;
	VERIFY(mask.Create(maskWidth,maskHeight,m_pImage->GetBPP()));
	CDC *pMaskDC=CDC::FromHandle(mask.GetDC());
	CBrush brush(RGB(0,0,0));
	pMaskDC->FillRect(maskRect,&brush);
	CBrush fillBrush(RGB(0xff,0xff,0xff));
	pMaskDC->SelectObject(&fillBrush);
	pMaskDC->Ellipse(maskRect);
	pMaskDC->BitBlt(0,0,maskWidth,maskHeight,pImageDC,0,0,SRCPAINT);
	mask.ReleaseDC();
	m_pImage->ReleaseDC();


inserted by FC2 system