12. 颜色

emWin支持不同程度的色彩显示,比如彩色显示、多阶灰度显示和黑/白显示等。 用户现有的emWin应用程序只需修改位于GUIDRV_wf.c中的显示配置,就可以在不同类型的显示器上正常使用。

12.1. 逻辑颜色和物理颜色
在emWin中颜色分为逻辑颜色和物理颜色。其中逻辑颜色是应用程序处理的颜色, 包含三个8位的颜色分量和一个8位的alpha通道。在emWin V5.30之前的很长一段时间内, 逻辑颜色都只有ABGR这一种颜色格式,如表格 ABGR逻辑颜色格式 所示。

在这里插入图片描述
随着越来越多的硬件平台开始使用和ABGR稍微不同的颜色格式,emWin从V5.30开始增加了对ARGB逻辑颜色格式的支持, 以便在某些情况下能够显着提高性能。ARGB逻辑颜色格式构成如表格 ARGB逻辑颜色格式 所示。

在这里插入图片描述
从上表可以看出,ARGB逻辑颜色格式除了将蓝色和红色调换了位置以外,Alpha通道值的定义也完全相反。

由于STM32F429的DMA2D采用的就是ARGB颜色格式,所以我们所有的例程全部使用ARGB格式。 因为emWin的逻辑颜色格式跟DMA2D的格式相同的话可以提升性能和运行效率。如果还是采用原来的ABGR格式,显示的时候每个像素都要进行格式转换, 这样对图形性能有较大影响,特别是显示24位和32位色彩深度的图形时影响会很大。如何开启ARGB颜色格式在emWin移植章节已有介绍,在此不再赘述。

物理颜色是显示器实际显示的颜色,在运行时,逻辑颜色映射到物理颜色。

12.2. 预定义的颜色
emWin预定义了一些标准颜色,这些颜色使用宏定义来表示,如图 emWin预定义颜色 所示。

在这里插入图片描述
这里需要注意一点,图 emWin预定义颜色 是官方手册给出的标准颜色宏定义,使用的是ABGR颜色格式。 程序中则给出了ARGB和ABGR两种格式下的标准颜色宏定义,见 代码清单:颜色-1 。

代码清单:颜色-1 标准颜色定义

/*********************************************************************
*
*       Standard colors
*/
#if (GUI_USE_ARGB) //ARGB格式的标准颜色定义
#define GUI_BLUE          0xFF0000FF
#define GUI_GREEN         0xFF00FF00
#define GUI_RED           0xFFFF0000
#define GUI_CYAN          0xFF00FFFF
#define GUI_MAGENTA       0xFFFF00FF
#define GUI_YELLOW        0xFFFFFF00
#define GUI_LIGHTBLUE     0xFF8080FF
#define GUI_LIGHTGREEN    0xFF80FF80
#define GUI_LIGHTRED      0xFFFF8080
#define GUI_LIGHTCYAN     0xFF80FFFF
#define GUI_LIGHTMAGENTA  0xFFFF80FF
#define GUI_LIGHTYELLOW   0xFFFFFF80
#define GUI_DARKBLUE      0xFF000080
#define GUI_DARKGREEN     0xFF008000
#define GUI_DARKRED       0xFF800000
#define GUI_DARKCYAN      0xFF008080
#define GUI_DARKMAGENTA   0xFF800080
#define GUI_DARKYELLOW    0xFF808000
#define GUI_WHITE         0xFFFFFFFF
#define GUI_LIGHTGRAY     0xFFD3D3D
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值