Paip.提升用户体验------在C++ Builder 不规则图片按钮实现总结
2013-10-15 23:52
555 查看
Paip.提升用户体验------在C++ Builder 不规则图片按钮实现总结
1.使用图像组件(简单的) 1
2.使用默认按钮设置mask以及背景(不行).. 1
CreateRectRgn+CombineRgn +SetWindowsRgn法(常用) 1
CreatePolygonRgn+SetWindowsRgn 2
///////////使用gdi+ 2
///////////原理 2
已经有了按钮的修理(隐藏按钮,加图片)
3
参考: 3
Xpsp3+C++ Builder 2009
作者Attilax , EMAIL:1466519819@qq.com
来源:attilax的专栏
地址:http://blog.csdn.net/attilax
但是,图片只是绘出来的的,没有handle,没有focus...
用C++Builder5编制不规则界面精美媒体播放器 - 计算机理论 - 道客巴巴.htm
Image shaped forms.htm by Andy Walker
---- 按钮的各种形状是在运行时设置的而不是在设计时设置。设计时按钮的形状仍然是长方形或正方形。
---- 按钮形状的设计分成两个步骤。
---- 第一步创建按钮的外形,即定义窗口区域。使用API的区域创建函数就可达到目的。区域创建函数很多,主要有CreateEllipticRgn 、CreatePolygonRgn、 CreateRectRgn、 CreateRoundRectRgn,用于创建不同类型的区域显示。如果需要一个复杂区域形状,那么可以分别使用不同的区域函数创建不同的区域,然后调用CombineRgn API函数把它们组合起来。所以说,不仅可以创建出园形、三角形的按钮,而且还可以创建出其它各种形状的按钮。
---- 第二步将区域显示应用到窗口上。一旦使用区域函数创建了一个新的区域显示,就可以使用SetWindowsRgn函数将这个区域应用到窗口上。
实现窗口区域的最佳时机是在窗体首次创建时,所以将处理程序放在OnCreate事件中。
非规则窗体的***关键是要得到一个表示这个不规则区域的数据结构,MFC里由CRgn类来表示。要通过图片来获得按钮区域,只需要检测相关的点生成这个类的实例即可。
如下所示,直接检测象素点的A分量是否为0,不为0则该点就是窗体区域的一部分。
通过检测png图片透明区实现不规则按钮 - Enin的专栏 - 博客频道 - CSDN.NET.htm
用C++Builder5编制不规则界面精美媒体播放器 - 计算机理论 - 道客巴巴.htm
1.使用图像组件(简单的) 1
2.使用默认按钮设置mask以及背景(不行).. 1
CreateRectRgn+CombineRgn +SetWindowsRgn法(常用) 1
CreatePolygonRgn+SetWindowsRgn 2
///////////使用gdi+ 2
///////////原理 2
已经有了按钮的修理(隐藏按钮,加图片)
3
参考: 3
Xpsp3+C++ Builder 2009
作者Attilax , EMAIL:1466519819@qq.com
来源:attilax的专栏
地址:http://blog.csdn.net/attilax
1.使用图像组件(简单的)
使用图像创建按钮不仅可以使按钮的颜色和形状变化更加灵活,而且不需编写过多的代码但是,图片只是绘出来的的,没有handle,没有focus...
2.使用默认按钮设置mask以及背景(不行)..
但是,vcl好像没设置mask, 背景只能bmp格式..放弃..CreateRectRgn+CombineRgn +SetWindowsRgn法(常用)
这个ms常使用.用C++Builder5编制不规则界面精美媒体播放器 - 计算机理论 - 道客巴巴.htm
Image shaped forms.htm by Andy Walker
CreatePolygonRgn+SetWindowsRgn
扫描图片轮扩...在SetWindowsRgn///////////使用gdi+
GDI+功能强大,处理图片更是轻松多了,直接支持RGBA色彩。///////////原理
---- 由于Window 95增加了对窗口区域概念的支持,使得窗口区域就是所定义的窗口看上去的形状,窗口区域作为窗口的实际边界区域,这样窗口区域不仅定义了窗口的可画区域,而且定义了窗口下隐含区域和响应鼠标击键事件的响应窗口区域。---- 按钮的各种形状是在运行时设置的而不是在设计时设置。设计时按钮的形状仍然是长方形或正方形。
---- 按钮形状的设计分成两个步骤。
---- 第一步创建按钮的外形,即定义窗口区域。使用API的区域创建函数就可达到目的。区域创建函数很多,主要有CreateEllipticRgn 、CreatePolygonRgn、 CreateRectRgn、 CreateRoundRectRgn,用于创建不同类型的区域显示。如果需要一个复杂区域形状,那么可以分别使用不同的区域函数创建不同的区域,然后调用CombineRgn API函数把它们组合起来。所以说,不仅可以创建出园形、三角形的按钮,而且还可以创建出其它各种形状的按钮。
---- 第二步将区域显示应用到窗口上。一旦使用区域函数创建了一个新的区域显示,就可以使用SetWindowsRgn函数将这个区域应用到窗口上。
实现窗口区域的最佳时机是在窗体首次创建时,所以将处理程序放在OnCreate事件中。
非规则窗体的***关键是要得到一个表示这个不规则区域的数据结构,MFC里由CRgn类来表示。要通过图片来获得按钮区域,只需要检测相关的点生成这个类的实例即可。
如下所示,直接检测象素点的A分量是否为0,不为0则该点就是窗体区域的一部分。
已经有了按钮的修理(隐藏按钮,加图片)
不个按钮不显示, 加个图片,加事件,调用按钮的event..参考:
如何用c++builder做不规则外形的按钮? - CSDN论坛 - CSDN.NET.htm通过检测png图片透明区实现不规则按钮 - Enin的专栏 - 博客频道 - CSDN.NET.htm
用C++Builder5编制不规则界面精美媒体播放器 - 计算机理论 - 道客巴巴.htm
相关文章推荐
- Paip.提升用户体验------在C++ Builder 不规则图片按钮实现总结
- paip.提升用户体验-------在C++ Builder 中为Form窗体添加背景图片
- paip.提升用户体验---c++ QPushButton按钮控件透明以及不规则按钮以及 鼠标越过动态设置
- paip.提高用户体验----c++图片按钮方法总结
- paip.提升用户体验-------在C++ Builder 中为Form窗体添加背景图片
- paip.提升用户体验------c++ 拖曳使用总结..
- paip.提升用户体验---上传文件图片命名
- paip.提高用户体验----增添开始菜单类似360小助手按钮总结
- paip.提升用户体验---提取FLASH中图片
- paip.提升用户体验--radio图片选择器 easyui 实现..
- paip.提升用户体验---提高兼容性无JS支持总结
- paip.提升用户体验--radio图片选择器 easyui 实现..
- paip.提升用户体验------c++ Qt5 实现程序图标以及动态托盘闪烁图标
- paip.提升用户体验与安全性---注册流程总结
- Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率..
- paip.提升用户体验=----c++ qt 字体切换功能缺少的总结..
- Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率..
- paip.提升用户体验---c++ qt 悬浮窗实现
- paip.提升用户体验---c++ qt 悬浮窗实现
- paip.提升用户体验----错误信息提示结构总结