emWin BATTON控件透明化
大体思路是通过更改按钮皮肤属性的方式实现来实现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控件透明化相关推荐
- STM32——EMWIN EDIT 控件(十八)
EMWIN 文章目录 EMWIN 前言 一. EDIT 控件简介 二.通知代码 三.键盘反应 四. EDIT 控件 API 函数 五.EDIT 控件演示例程 总结 前言 EDIT 控件通常用来作为输入 ...
- QT上设置背景图不影响子控件以及按钮控件的透明化
QT中设置背景图不影响子控件 QT中设置背景图的方法不少,我这里是直接使用stylesheet来设置背景图.如果直接在UI界面进行如下所示设置 border-image: url(:/resource ...
- 5.Emwin控件显示中文
Emwin模拟器控件(text.radio.multiedi.dropdown等)显示中文(移植GUI到32单片机上也可以正常显示) 我这个办法可以在pc模拟器上显示中文,同时界面做好了中文显示之后, ...
- 【第3版emWin教程】第55章 emWin6.x按钮Button控件自定义回调函数,实现各种按钮效果
教程不断更新中:链接 第55章 emWin6.x按钮Button控件自定义回调函数,实现各种按钮效果 本章节为大家讲解按钮控件自定义回调函数,通过其回调函数就可以实现各种按钮效果.这方面的 ...
- 【第3版emWin教程】第53章 emWin6.x的按钮Button控件
教程不断更新中:链接 第53章 emWin6.x的按钮Button控件 本章节为大家讲解emWin支持的按钮控件,按钮控件还是非常实用的,实际项目中用到的地方很多,控件的本质就是窗口,或者 ...
- emWin 2天速成实例教程007_Graph波形曲线图形控件使用方法
备注:(1)打开工程目录下的"Exe\GUISimulationDebug.exe"即可看到效果.(2)看完教程000-005就基本会用emWin做项目,其他章节可以需要时再参考. ...
- 【第3版emWin教程】第50章 emWin6.x的AppWizard使用控件经典回调方式
教程不断更新中:第3版emWin教程和ThreadX GUIX教程开工,双管齐下,GUIX更新至第28章,emWin更新至第50章(2021-10-01) - uCOS & uCGUI &am ...
- emWin/STemWin模拟器之Graph控件
emWin/STemWin模拟器之Graph控件 一.运行官方提供的例程 二.为Graph控件展示框架 三. Graph控件的结构 四. 创建Graph控件 五. 为Graph控件添加水平刻度和垂直刻 ...
- emwin 仪表_分享一个emWin软键盘控件
分享一个emWin软键盘控件 [复制链接] 本帖最后由 glcd 于 2016-6-27 16:30 编辑 花了两天时间做了个emWin软键盘控件,并命名为ButtonSKB控件: image001. ...
- 【第3版emWin教程】第51章 emWin6.x的Window窗口控件
教程不断更新中:链接 第51章 emWin6.x的Window窗口控件 本章节为大家讲解emWin6.x支持的窗口控件,窗口控件和前面讲的窗口本质上面是一样的,只不过这里是以控件的形式存在 ...
最新文章
- 报名 | 2019清华大数据系统软件峰会
- golang 切片 截取参数 简介
- Java操作Kafka创建Topic、Producer、Consumer
- main函数解析(一)——Linux-0.11 学习笔记(五)
- spring 事务 配置 多个
- 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include quot;StdAfx.hquot;”?
- 从每年的编程语言排行来看,为什么C/C++能稳居前五?
- 量子计算计算机简史pdf,量子计算及其潜在应用.pdf
- hdu 5178 pairs (线性探查问题)
- 【车牌识别】基于matlab车牌识别【含Matlab源码 417期】
- 最新诺顿病毒库报暴风影音7.0有毒![原]
- no ip domain-lookup 是什么意思?
- 零基础能不能学计算机专业,零基础能学计算机专业吗?
- Kubernetes 学习总结(27)—— Kubernetes 安装 Redis 集群的两个方案
- python中的sin函数_Python sin() 函数
- Android报错:Only fullscreen activities can request orientation的解决方法
- R语言学习-创建空矩阵
- 水星路由器DNS服务器未响应,新买的水星(MERCURY)路由器怎么设置?
- Linux快捷键及服务命令
- jira 饼图中文乱码 显示“口口口”
热门文章
- Unity ECS Sample解析(1)
- mac触控板 鼠标中键_如何使用触控板,鼠标或键盘在任何Mac上单击鼠标右键
- 7-2 古风排版 C语言
- NJM4556AM集成电路是高增益、大输出电流双路运算放大器
- Go语言-复合数据结构(map)
- ALS算法介绍(协同过滤算法介绍)
- MATLAB 显示和保存傅里叶变化频谱图
- layui模板引擎 (laytpl) 与Flask模板引擎 (jinja2)冲突的问题
- Web 前端本地化(一)
- 使用python批量压缩图片分辨率到指定大小,替换之前的压缩Image.ANTIALIAS