MFC透明控制元件
阿新 • • 發佈:2018-11-09
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實現圖片的區域為不透明的部分。