常见的按钮或窗体都是四四方方的矩形,默认创建产生的window窗体都是矩形的。但非矩形窗体在Windows系统中同样很常见,比如Windows Media Player中控制按钮等等。
非规则窗体的制作关键是要得到一个表示这个不规则区域的数据结构,MFC里由CRgn类来表示。要通过图片来获得按钮区域,只需要检测相关的点生成这个类的实例即可。
GDI+功能强大,处理图片更是轻松多了,直接支持RGBA色彩。
如下所示,直接检测象素点的A分量是否为0,不为0则该点就是窗体区域的一部分。
完整代码如下所示,CSkinButton类可以直接根据图象,生成自身的窗体区域。
这是用这个类做的一个实例:左边是用photoshop做设计,右边是运行效果。