1. 程式人生 > >MFC透明控制元件

MFC透明控制元件

void GetBKimageVisibleRgn(CString filepath, int width, int height, CRgn& Rgn)
{
	//獲取圖片寬高
	Bitmap *pimage = Bitmap::FromFile(filepath);
	pimage->SetResolution(width, height);

	int imageW = pimage->GetWidth();
	int imageH = pimage->GetHeight();
	Rgn.CreateRectRgn(0, 0, imageW, imageH);

	COLORREF color;
	for (int i = 0; i < imageH; i++)//行迴圈從上到下行
	{
		for (int j = 0; j < imageW; j++)//列迴圈從左到右
		{
			Color cl;
			pimage->GetPixel(j, i, &cl);
			int alp = (int)cl.GetAlpha();//獲取j,i點的ALP值
			if (alp == 0)
			{
				CRgn tempPixRgn;//象素點區域
				tempPixRgn.CreateRectRgn(j, i, j + 1, i + 1);
				Rgn.CombineRgn(&Rgn, &tempPixRgn, RGN_XOR);//重疊區域拋棄疊加
				tempPixRgn.DeleteObject();
			}
		}
	}
}

以上程式碼可以根據圖片獲取Rgn,然後通過SetWindowRgn實現圖片的區域為不透明的部分。