首先我先创建一个资源位图,然后把你要画的位图形状画在资源位图上,但要使第一个像素不要被画到.
然后用m_bitmap.LoadBitmap(资源位图);加载.
再用 CDC tempDC;
CWindowDC dc(此窗口类);
COLORREF colorMark,color;
CRgn wndRgn,tempRgn;
tempDC.CreateCompatibleDC(&dc);
tempDC.SelectObject(&m_bitmap);
colorMark=tempDC.GetPixel(0,0);//获得第一个像素点的颜色值
if(m_SystemMetrics>468){
m_SystemMetrics=468;
}
wndRgn.CreateRectRgn(0,0,位图宽,位图高);
for(int i=0;i<m_SystemMetrics;i++){ //把跟第一个像素点颜色值相同的跟源矩形异或
for(int j=0;j<35;j++){
color=tempDC.GetPixel(i,j);
if(colorMark==color){
tempRgn.CreateRectRgn(i,j,i+1,j+1);
wndRgn.CombineRgn(&tempRgn,&wndRgn,RGN_XOR);
tempRgn.DeleteObject();
}
}
}
最后用SetWindowRgn((HRGN)wndRgn,true);把本窗口的形状改成异或后的矩形