Win32下创建异形窗口

来源:互联网 发布:开关电源软件破解 编辑:程序博客网 时间:2024/05/13 03:28
一、异型窗口  

异型窗口就是一些不规则的窗口,我们平时所见到的窗口如“画图”、word等,它们的窗口都是矩形的,然而,我们实际开发中,项目为了增加交互性和漂亮的UI来吸引用户,产品经理极有可能需要来做一些不规则的窗口。


二、异形窗口实现的原理

所有的 Windows 窗体都位于一个称为“region”中,窗体的大小如果超出“region”的范围,windows 会自动裁剪超出"region"范围那部分的窗体,使其不可见。所以,要创建不规则窗体有两个步骤:第一步就是创建不规则"region".第二步就是将窗体放到创建的“region”中。(此段摘自网络)

1. 如何创建不规则Rgn
  有各种api函数可以创建任意形状的区域,现在只针对最常用的图片来做Rgn。

核心函数:
HRGN BitmapToRegion (HBITMAP hBmp , COLORREF cTransparentColor , COLORREF cTolerance );

参数:hBmp: 原图片,利用该图片创建Rng
cTransparentColor 透明色 ,赋值可用RGB(r1, g1 , b1)
cTolerance 透明色间隔 ,赋值可用RGB(r, g , b), 从RGB(r1, g1 , b1)到RGB(r1 +r, g1+g , b1+b)

BitmapToRegion源代码不是我写的,我就不班门弄斧了。哈哈!


2. 如何将窗体放到创建好的Rgn
这一步很简单,将上一步做好的Rgn,set进去就OK了
如利用图片hBigBee来制作Rng,透明色从RGB(245, 245, 245)到RGB(255, 255, 255)
   HRGN hRgn = BitmapToRegion(hBigBee, RGB(245, 245, 245), RGB(10, 10, 10) );
   
   SetWindowRgn(hWnd, hRgn, FALSE);


最后,来张演示图:

源代码下载
0 0
原创粉丝点击