Windows窗体都有位于一个区域("region")中,窗体的大小如果超出"region”的范围,windows会自动裁剪超出“region”范围的区域,使得窗体形状保持不规则“region”的区域,形成不规则窗体,因此,要创建一个不规则窗体,需要如下两个步骤:
(1)第一步是创建不规则的区域"region"
(2)第二步就是将窗体放到不规则的"region"中
创建region的方式有很多种,有如下方法:
(1)利用windowsApi函数创建region,有CreateEllipticRgn(int x1,int y1,int x2,int y2)创建椭圆区域, CreatePolygonRgn(POINTAPI lpPoint, long nCount, long nPolyFillMode)创建多边形局域,还有矩形区域,圆角矩形区域等等。代码形式如 HRGN hrgn = CreateEllipticRgn(50,50,250,250);
(2)用作图法创建region,我们可以使用BeginPath( HDC hdc)和EndPath(HDC hdc)用法记录绘图的过程,然后使用HRGN PathToRegion( HDC hdc )将绘图过程转换为HRGN型区域。
(3)用图像创建region,这种方法笔记复杂,步骤如下所示:
a.准备要创建region的bmp位图,将其中不需要的颜色(即作为透明色)标记为MaskColor;
b.把准备的位图读取到dc中;
c.根据位图上我们想要的像素一起拼接形成相应的region;
d.根据不则的region创建对应的窗口
部分实现代码
效果图