Colors(颜色)
显示原文
The color module handles all color-related functions like changing color depth, creating colors from hex code, converting between color depths, mixing colors, etc.
The type lv_color_t
is used to store a color in RGB888 format.
This type and format is used in almost all APIs regardless to LV_COLOR_DEPTH.
颜色模块处理所有与颜色相关的功能,如改变颜色深度、从十六进制代码创建颜色、在颜色深度之间转换、混合颜色等。
类型 lv_color_t
用于以RGB888格式存储颜色。无论 LV_COLOR_DEPTH 如何,几乎所有 API 中都使用此类型和格式。
Creating colors(创造色彩)
RGB(三原色)
显示原文
Create colors from Red, Green and Blue channel values:
从红色、绿色和蓝色通道值创建颜色
/*All channels are 0-255*/
lv_color_t c = lv_color_make(red, green, blue);
/*Same but can be used for const initialization too */
lv_color_t c = LV_COLOR_MAKE(red, green, blue);
/*From hex code 0x000000..0xFFFFFF interpreted as RED + GREEN + BLUE*/
lv_color_t c = lv_color_hex(0x123456);
/*From 3 digits. Same as lv_color_hex(0x112233)*/
lv_color_t c = lv_color_hex3(0x123);
HSV(色调饱和值-Hue Saturation Value)
显示原文
Create colors from Hue, Saturation and Value values:
根据色相、饱和度和值创建颜色
//h = 0..359, s = 0..100, v = 0..100
lv_color_t c = lv_color_hsv_to_rgb(h, s, v);
//All channels are 0-255
lv_color_hsv_t c_hsv = lv_color_rgb_to_hsv(r, g, b);
//From lv_color_t variable
lv_color_hsv_t c_hsv = lv_color_to_hsv(color);
Palette(调色板)
显示原文
LVGL includes Material Design's palette of colors. In this system all named colors have a nominal main color as well as four darker and five lighter variants.
The names of the colors are as follows:
LV_PALETTE_RED
LV_PALETTE_PINK
LV_PALETTE_PURPLE
LV_PALETTE_DEEP_PURPLE
LV_PALETTE_INDIGO
LV_PALETTE_BLUE
LV_PALETTE_LIGHT_BLUE
LV_PALETTE_CYAN
LV_PALETTE_TEAL
LV_PALETTE_GREEN
LV_PALETTE_LIGHT_GREEN
LV_PALETTE_LIME
LV_PALETTE_YELLOW
LV_PALETTE_AMBER
LV_PALETTE_ORANGE
LV_PALETTE_DEEP_ORANGE
LV_PALETTE_BROWN
LV_PALETTE_BLUE_GREY
LV_PALETTE_GREY
To get the main color use
lv_color_t c = lv_palette_main(LV_PALETTE_...)
.
For the lighter variants of a palette color use
lv_color_t c = lv_palette_lighten(LV_PALETTE_..., v)
. v
can be
1..5. For the darker variants of a palette color use
lv_color_t c = lv_palette_darken(LV_PALETTE_..., v)
. v
can be
1..4.
LVGL中包含 Material Design's palette 的颜色。在这个系统中,所有命名的颜色都有一个名义上的主要颜色,以及四种更深和五种较浅的变体。
颜色的名称如下:
LV_PALETTE_RED
LV_PALETTE_PINK
LV_PALETTE_PURPLE
LV_PALETTE_DEEP_PURPLE
LV_PALETTE_INDIGO
LV_PALETTE_BLUE
LV_PALETTE_LIGHT_BLUE
LV_PALETTE_CYAN
LV_PALETTE_TEAL
LV_PALETTE_GREEN
LV_PALETTE_LIGHT_GREEN
LV_PALETTE_LIME
LV_PALETTE_YELLOW
LV_PALETTE_AMBER
LV_PALETTE_ORANGE
LV_PALETTE_DEEP_ORANGE
LV_PALETTE_BROWN
LV_PALETTE_BLUE_GREY
LV_PALETTE_GREY
要获取主要颜色,请使用
lv_color_t c = lv_palette_main(LV_PALETTE_...)
.
要获得调整亮度后的调色板颜色,请使用 lv_color_t c = lv_palette_lighten(LV_PALETTE_..., v)
. v
可以是1到5。
要获得调整深度后的调色板颜色,请使用 lv_color_t c = lv_palette_darken(LV_PALETTE_..., v)
. v
可以是1到4。
Modify and mix colors(修改和混合颜色)
显示原文
The following functions can modify a color:
以下函数可以修改颜色:
// Lighten a color. 0: no change, 255: white
lv_color_t c = lv_color_lighten(c, lvl);
// Darken a color. 0: no change, 255: black
lv_color_t c = lv_color_darken(lv_color_t c, lv_opa_t lvl);
// Lighten or darken a color. 0: black, 128: no change 255: white
lv_color_t c = lv_color_change_lightness(lv_color_t c, lv_opa_t lvl);
// Mix two colors with a given ratio 0: full c2, 255: full c1, 128: half c1 and half c2
lv_color_t c = lv_color_mix(c1, c2, ratio);
Built-in colors(内置颜色)
显示原文
lv_color_white()
and lv_color_black()
return 0xFFFFFF
and
0x000000
respectively.
lv_color_white()
和 lv_color_black()
分别返回 0xFFFFFF
和 0x000000
。
Opacity(不透明度)
显示原文
To describe opacity the lv_opa_t
type is created from uint8_t
.
Some special purpose defines are also introduced:
LV_OPA_TRANSP
Value: 0, means no opacity making the color completely transparentLV_OPA_10
Value: 25, means the color covers only a littleLV_OPA_20 ... OPA_80
follow logicallyLV_OPA_90
Value: 229, means the color near completely coversLV_OPA_COVER
Value: 255, means the color completely covers (full opacity)
You can also use the LV_OPA_*
defines in lv_color_mix()
as a
mixing ratio.
描述不透明度时,创建了 lv_opa_t
类型,该类型由 uint8_t 创建。
还引入了一些特殊目的的定义:
LV_OPA_TRANSP
值为0,表示完全透明,使颜色完全透明LV_OPA_10
值为25,表示颜色仅覆盖一小部分LV_OPA_20 ... OPA_80
遵循逻辑LV_OPA_90
值为229,表示颜色几乎完全覆盖LV_OPA_COVER
值为255,表示颜色完全覆盖(完全不透明)
您还可以在 lv_color_mix()
中使用 LV_OPA_*
定义作为混合的 比例。