🚀 优质资源分享 🚀
学习路线指引(点击解锁) | 知识定位 | 人群定位 |
---|---|---|
🧡 Python实战微信订餐小程序 🧡 | 进阶级 | 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 |
💛Python量化交易实战💛 | 入门级 | 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 |
颜色
构造颜色
在 LVGL 中,颜色以结构 lv_color_t
表示。在最开始移植整个工程时,曾经在 lv_conf.h
中修改过颜色深度:
/*Color depth: 1 (1 byte per pixel), 8 (RGB332), 16 (RGB565), 32 (ARGB8888)*/
#define LV\_COLOR\_DEPTH 32
LVGL 会自动根据所选的颜色深度创建合适的颜色结构。在接下来几处位置还有几个与颜色有关的配置选项,可以参照注释修改。
例如,16 位 big-endian 的颜色定义为:
typedef union {
struct {
uint16\_t blue : 5;
uint16\_t green : 6;
uint16\_t red : 5;
} ch;
uint16\_t full;
} lv\_color16\_t;
typedef lv\_color16\_t lv\_color\_t;
那么就可以根据该结构创建合适的颜色值了:
lv\_color\_t orange = {
.ch = {
.red = 0b11111,
.green = 0b101001,
.blue = 0
}
};
直接创建 RGB565 的颜色格式有点难以调色,不过可以借用以下函数从十六位颜色中生成合适的颜色值:
lv\_color\_t orange = lv\_color\_make(0xFF, 0xA5, 0); // 从颜色通道创建
lv\_color\_t aqua = lv\_color\_hex(0x00FFFF); // 从十六进制创建
lv\_color\_t lightgrey = lv\_color\_hex3(0xddd); // 从十六进制简写创建
这些颜色在创建时,每种颜色通道的值都使用 0~255 表示即可,创建过程中会自动转换为合适的颜色值。
LVGL 还提供了 HSV 格式的颜色支持,
lv\_color\_t red = lv\_color\_hsv\_to\_rgb(0, 100, 100); // 从 HSV 颜色空间创建颜色
lv\_color\_hsv\_t blue = lv\_color\_rgb\_to\_hsv(r, g, b); // 将 RGB 颜色转换为 HSV 颜色
除此之外,lv_color_t
、RGB 颜色、HSV 颜色之间也能互相转换。
如果觉得 16 进制的颜色还是不够直观,还可以使用调色板功能。LVGL 提供了常用颜色的色值表示,可以直接使用、微调、混合这些颜色。
例如,以下直接调出了一个紫色:
lv\_color\_t purple = lv\_palette\_main(LV_PALETTE_PURPLE)
如果觉得默认的紫色太深或太浅的话,还可以在调色板中更改亮度:
lv\_color\_t dark_purple = lv\_palette\_darken(LV_PALETTE_PURPLE, 2) // 调深两级,最多可以调深或浅 4 级
lv\_color\_t light_purple = lv\_color\_lighten(purple, 60); // 调浅一些,调到 255 就变成纯白