Win32下创建异形窗口
2014-04-15 18:27
295 查看
一、异型窗口
异型窗口就是一些不规则的窗口,我们平时所见到的窗口如“画图”、word等,它们的窗口都是矩形的,然而,我们实际开发中,项目为了增加交互性和漂亮的UI来吸引用户,产品经理极有可能需要来做一些不规则的窗口。
二、异形窗口实现的原理
所有的 Windows 窗体都位于一个称为“region”中,窗体的大小如果超出“region”的范围,windows 会自动裁剪超出"region"范围那部分的窗体,使其不可见。所以,要创建不规则窗体有两个步骤:第一步就是创建不规则"region".第二步就是将窗体放到创建的“region”中。(此段摘自网络)
1. 如何创建不规则Rgn
有各种api函数可以创建任意形状的区域,现在只针对最常用的图片来做Rgn。
核心函数:
参数: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)
最后,来张演示图:
源代码下载
异型窗口就是一些不规则的窗口,我们平时所见到的窗口如“画图”、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);
最后,来张演示图:
源代码下载
相关文章推荐
- win32 的DLL中创建windows窗口
- win32程序窗口的创建
- Win32 API与MFC创建窗口对比
- OpenGL1-创建窗口(建立Win32的OpenGL开发环境 )(代码上传)
- Win32中窗口的创建和消息机制以及MFC对Win32的封装简介
- win32窗口创建六部曲
- 利用位图创建异形对话框窗口
- [Win32]创建模态窗口
- Win32汇编:创建简单的窗口
- 实习随手记-win32创建窗口操作
- 用Win32 API创建不规则窗口
- 用Win32 API创建不规则窗口
- win32sdk学习-创建一个对话框窗口
- win32程序窗口的创建
- Win32创建窗口的过程
- WIN32窗口创建
- win32窗口的创建,GDI简单的绘图操作
- win32窗口创建 之 CreateDialog和DialogBox
- 创建异形窗口[6]
- 【win32】day03-窗口注册和创建