大体思路是通过更改按钮皮肤属性的方式实现来实现BATTON控件的透明化。

先了解一下官方手册中的相关信息:
我们只需将所有的颜色改为透明即可实现控件的全透明化,因此我们需要打开Alpha混合功能,所用函数为:

GUI_EnableAlpha(1);

此时我们使用的颜色格式为ARGB或ABGR(emWin5.30版本之前只有ABGR),默认应该是ABGR,想使用ARGB需要在 GUIConf.h 文件中设置宏定义:

#define GUI_USE_ARGB (1)

两种颜色格式的alpha 透明通道均为bit[31:24]8位,但是在ARGB中00代表完全透明、FF代表完全不透明,而ABGR与其相反。官方头文件中给出的透明宏定义,使用GUI_TRANSPARENT作为颜色的话emWin会根据设定自动调整alpha 透明通道的值。

#define GUI_TRANSPARENT   GUI_MAKE_COLOR(0xFF000000)

开启Alpha混合功能后,使用void BUTTON_GetSkinFlexProps (BUTTON_SKINFLEX_PROPS * pProps, int Index)函数得到当前控件指定状态的皮肤数据,其中Index有几种值,参考下表
将全部组件的颜色变为透明以后再使用void BUTTON_SetSkinFlexProps (const BUTTON_SKINFLEX_PROPS * pProps, int Index)函数更换皮肤。代码如下:

void Set_batton_skin(void)
{BUTTON_SKINFLEX_PROPS Props;BUTTON_GetSkinFlexProps(&Props, BUTTON_SKINFLEX_PI_ENABLED);Props.aColorUpper[0] = GUI_TRANSPARENT;        //顶部渐变的顶部颜色。Props.aColorLower[0] = GUI_TRANSPARENT;        //顶部渐变的底部颜色。Props.aColorUpper[1] = GUI_TRANSPARENT;        //底部渐变的顶部颜色。Props.aColorLower[1] = GUI_TRANSPARENT;        //底部渐变的底部颜色。Props.aColorFrame[0] = GUI_TRANSPARENT;                   //周围框架的外部颜色。Props.aColorFrame[1] = GUI_TRANSPARENT;  //周围框架的内部颜色。Props.aColorFrame[2] = GUI_TRANSPARENT;  //周围框架与内部矩形区域之间的区域颜色。Props.Radius = 5;BUTTON_SetSkinFlexProps(&Props, BUTTON_SKINFLEX_PI_ENABLED); //更换启用状态皮肤BUTTON_GetSkinFlexProps(&Props, BUTTON_SKINFLEX_PI_PRESSED);Props.aColorUpper[0] = 0x301E90FF;        //顶部渐变的顶部颜色。Props.aColorLower[0] = 0x301E90FF;        //顶部渐变的底部颜色。Props.aColorUpper[1] = 0x301E90FF;        //底部渐变的顶部颜色。Props.aColorLower[1] = 0x301E90FF;        //底部渐变的底部颜色。Props.aColorFrame[0] = 0x301E90FF;                   //周围框架的外部颜色。Props.aColorFrame[1] = 0x301E90FF;  //周围框架的内部颜色。Props.aColorFrame[2] = 0x301E90FF;  //周围框架与内部矩形区域之间的区域颜色。Props.Radius = 5;BUTTON_SetSkinFlexProps(&Props, BUTTON_SKINFLEX_PI_PRESSED); //更换按下状态皮肤
}

将按钮按下的颜色设置为0x301E90FF(为透明度为0x30的道奇蓝),可以实现按钮按下变色的功能,可增加按钮的操作感。

演示如下,按钮抬起:

按钮按下:

如有错误欢迎指正~

emWin BATTON控件透明化相关推荐

  1. STM32——EMWIN EDIT 控件(十八)

    EMWIN 文章目录 EMWIN 前言 一. EDIT 控件简介 二.通知代码 三.键盘反应 四. EDIT 控件 API 函数 五.EDIT 控件演示例程 总结 前言 EDIT 控件通常用来作为输入 ...

  2. QT上设置背景图不影响子控件以及按钮控件的透明化

    QT中设置背景图不影响子控件 QT中设置背景图的方法不少,我这里是直接使用stylesheet来设置背景图.如果直接在UI界面进行如下所示设置 border-image: url(:/resource ...

  3. 5.Emwin控件显示中文

    Emwin模拟器控件(text.radio.multiedi.dropdown等)显示中文(移植GUI到32单片机上也可以正常显示) 我这个办法可以在pc模拟器上显示中文,同时界面做好了中文显示之后, ...

  4. 【第3版emWin教程】第55章 emWin6.x按钮Button控件自定义回调函数,实现各种按钮效果

    教程不断更新中:链接 第55章       emWin6.x按钮Button控件自定义回调函数,实现各种按钮效果 本章节为大家讲解按钮控件自定义回调函数,通过其回调函数就可以实现各种按钮效果.这方面的 ...

  5. 【第3版emWin教程】第53章 emWin6.x的按钮Button控件

    教程不断更新中:链接 第53章       emWin6.x的按钮Button控件 本章节为大家讲解emWin支持的按钮控件,按钮控件还是非常实用的,实际项目中用到的地方很多,控件的本质就是窗口,或者 ...

  6. emWin 2天速成实例教程007_Graph波形曲线图形控件使用方法

    备注:(1)打开工程目录下的"Exe\GUISimulationDebug.exe"即可看到效果.(2)看完教程000-005就基本会用emWin做项目,其他章节可以需要时再参考. ...

  7. 【第3版emWin教程】第50章 emWin6.x的AppWizard使用控件经典回调方式

    教程不断更新中:第3版emWin教程和ThreadX GUIX教程开工,双管齐下,GUIX更新至第28章,emWin更新至第50章(2021-10-01) - uCOS & uCGUI &am ...

  8. emWin/STemWin模拟器之Graph控件

    emWin/STemWin模拟器之Graph控件 一.运行官方提供的例程 二.为Graph控件展示框架 三. Graph控件的结构 四. 创建Graph控件 五. 为Graph控件添加水平刻度和垂直刻 ...

  9. emwin 仪表_分享一个emWin软键盘控件

    分享一个emWin软键盘控件 [复制链接] 本帖最后由 glcd 于 2016-6-27 16:30 编辑 花了两天时间做了个emWin软键盘控件,并命名为ButtonSKB控件: image001. ...

  10. 【第3版emWin教程】第51章 emWin6.x的Window窗口控件

    教程不断更新中:链接 第51章       emWin6.x的Window窗口控件 本章节为大家讲解emWin6.x支持的窗口控件,窗口控件和前面讲的窗口本质上面是一样的,只不过这里是以控件的形式存在 ...

最新文章

  1. 报名 | 2019清华大数据系统软件峰会
  2. golang 切片 截取参数 简介
  3. Java操作Kafka创建Topic、Producer、Consumer
  4. main函数解析(一)——Linux-0.11 学习笔记(五)
  5. spring 事务 配置 多个
  6. 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include quot;StdAfx.hquot;”?
  7. 从每年的编程语言排行来看,为什么C/C++能稳居前五?
  8. 量子计算计算机简史pdf,量子计算及其潜在应用.pdf
  9. hdu 5178 pairs (线性探查问题)
  10. 【车牌识别】基于matlab车牌识别【含Matlab源码 417期】
  11. 最新诺顿病毒库报暴风影音7.0有毒![原]
  12. no ip domain-lookup 是什么意思?
  13. 零基础能不能学计算机专业,零基础能学计算机专业吗?
  14. Kubernetes 学习总结(27)—— Kubernetes 安装 Redis 集群的两个方案
  15. python中的sin函数_Python sin() 函数
  16. Android报错:Only fullscreen activities can request orientation的解决方法
  17. R语言学习-创建空矩阵
  18. 水星路由器DNS服务器未响应,新买的水星(MERCURY)路由器怎么设置?
  19. Linux快捷键及服务命令
  20. jira 饼图中文乱码 显示“口口口”

热门文章

  1. Unity ECS Sample解析(1)
  2. mac触控板 鼠标中键_如何使用触控板,鼠标或键盘在任何Mac上单击鼠标右键
  3. 7-2 古风排版 C语言
  4. NJM4556AM集成电路是高增益、大输出电流双路运算放大器
  5. Go语言-复合数据结构(map)
  6. ALS算法介绍(协同过滤算法介绍)
  7. MATLAB 显示和保存傅里叶变化频谱图
  8. layui模板引擎 (laytpl) 与Flask模板引擎 (jinja2)冲突的问题
  9. Web 前端本地化(一)
  10. 使用python批量压缩图片分辨率到指定大小,替换之前的压缩Image.ANTIALIAS