前面的博文我已经讲了如何实现自绘制的窗口,这一篇也是接上前面的主体继续讲讲如何通过图片+自绘制的方式实现不规则窗体界面。其实现方式有两种,一种是准备两张位图,一张显示用的主图片,另一个张是将周围区域去除的蒙板图片。另一种是只准备一张图片,需要去除部分用同一种颜色,如黑色(不能与主体部分颜色相同,如果相同则会导致其他部分也会去除掉),图片加载绘制时把需要透明的像素去掉即可,其实现方式的步骤如下:
1、准备一张不规则的图片,周边需要去除的用黑色,如下图:
2、创建一个对话框类应用程序,并在对话框类中定义背景图像对象:CBitmap m_bgBmp; //窗体背景图对象
3、在对话框的初始化函数中加载图片,并调用扣除需要透明的图片像素,其代码如下:
HBITMAP hBmp = (HBITMAP)::LoadImage(NULL, GetAppPath() + "cover.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
m_bgBmp.Attach(hBmp);
BITMAP bm;
m_bgBmp.GetBitmap(&bm);
CRe