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

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 不规则图片按钮实现总结相关推荐

  1. paip.提升用户体验--提升java的热部署热更新能力

    paip.提升用户体验--提升java的热部署热更新能力 想让java做到php那么好的热部署能力  "fix online"/在线修复吗??直接在服务器上修改源码生效,无需重启应 ...

  2. 描点链接元素的优化提升用户体验

    用一些大网站的时候,发现有一个很细节的共同点:点击链接元素的时候,链接元素会产生一个明显的边框,而且这个边框的颜色和#f27b04很接近,我觉得既然很多大网站都这么做,这其中肯定有一些用户体验方面的东 ...

  3. 网络营销外包——网络营销外包专员浅析提升用户体验从哪入手?

    众所周知,在网站运营期间,网站跳出率的高低直接反映出用户对网站喜爱与否,也是检测网站性能是否丝滑的关键点,如果网站跳出率越高就证明用户体验越差,搜索引擎也不会更加注重抓取该网站.那么如果提高用户体验, ...

  4. 纯前端表格控件SpreadJS V12.1 隆重登场,专注易用性,提升用户体验

    ​ 一款优秀的开发工具,在更新迭代中,除了要满足不同场景的业务需求,也需不断优化已有功能,尤其是细节方面,要能为用户带来使用体验和开发效率的提升. 作为一款备受业界专家和开发者认可的纯前端类Excel ...

  5. 使用渐进式JPEG来提升用户体验

    今天才认识到原来JPEG文件有两种保存方式他们分别是Baseline JPEG(标准型)和Progressive JPEG(渐进式).两种格式有相同尺寸以及图像数据,他们的扩展名也是相同的,唯一的区别 ...

  6. android 6.0适应的机型,提升用户体验 可升Android 6.0机型盘点

    原标题:提升用户体验 可升Android 6.0机型盘点 [手机中国 导购]2009年Android系统正式发布,由此加速手机走向智能化进度.如今,随着Android系统日渐成熟,众多手机厂商都在此基 ...

  7. electron加载html加载不起来,Electron 预加载远程页面提升用户体验

    使用场景 Electron 内置 Chromium 和 Node.js,为了提升用户体验,通常 Electron 封装的前端静态文件存储在客户端本地.但总有一些特殊情况,会使用到部分远程页面. 比如微 ...

  8. APP开发中这十个细节能直接影响到用户体验,那么如何提升用户体验?

    随着软件开发技术的不断发展和完善,有众多同类选择的APP用户越来越挑剔,单单拼功能拼硬件已经不足以捕获用户芳心.在APP使用过程中,大部分用户无意识地培养出了对使用体验的重视感.这警醒企业,只盯着为用 ...

  9. 三星电子中国研究院院长张代君:Bixby绝非炫技而是为提升用户体验而生

    近日,三星正式对外发布旗下人工智能平台Bixby中文(普通话)版.与其他语音助手截然不同,Bixby包含语音.视觉.主页.提醒四大功能,可为用户提供多模交互体验.此外,Bixby还可以不断学习用户的使 ...

  10. 客户体验是什么?如何提升用户体验从而提高产品成单率?必读!

    近年来,"客户体验"成了一个很常用的词,但实际上很多人都无法给到一明确定义,尽管许多企业都将改进客户体验视为一项差异化的竞争优势.可是,如果连某种东西的定义都说不清楚,又如何谈得上 ...

最新文章

  1. nginx服务器的负载均衡和动静分离(未完)
  2. 【转】symbian操作系统 入门篇
  3. SQL查询所有客人的第一次用餐时间
  4. java 子线程传参_踩坑之Java执行Linux命令死锁阻塞挂起
  5. 单例销毁_【PHP设计模式】单例模式
  6. 在浙学大学计算机基础,艺术设计-浙江大学本科生院.PDF
  7. iscsi:IO操作流程(二)
  8. AKS解决方案架构设计
  9. 安捷伦频谱仪的使用方法图解_安捷伦E4402B频谱仪使用说明
  10. 【揭秘Wintel提升win 7系统性能的背后】
  11. ASP.NET会话(Session) 转载自:寒羽枫(cityhunter172)
  12. java求矩阵条件数_数值分析:矩阵求逆-奇异性、条件数
  13. 干货!老司机带你了解网易视频云互动直播,你想看的全都有
  14. Latex如何插入多个图片,实现并排排列或者多行多列排列
  15. 如何批量将 Word 文档转为 ePub 格式
  16. 一心多用多线程-线程创建的三种方式
  17. js三层数组循环遍历(笛卡尔积)运算,并生成顺序
  18. 国密SSL通信协议详细介绍与抓包分析
  19. AI一分钟 | 无人驾驶技术排名:百度居中游,苹果特斯拉垫底;Google在深圳设立办公室
  20. 禾赛获上汽飞凡前装量产定点,飞凡全新车型将搭载AT128

热门文章

  1. Libnet核心数据结构
  2. ASP.NET---动态生成Word文档
  3. Confluence 6 针对大数据量备份
  4. [官方消息]优秀云大使推广经验分享合集
  5. 关于wordpress主题只显示一个的解决办法
  6. 配置LACP模式链路聚合
  7. C#基础知识四之override和new的区别
  8. Oracle笔记整理
  9. 新起点、新目标--获得MVP后的感悟
  10. 开源程序安装框架-BitNami