logo资料库

第09章-颜色(uCGUI中文手册).pdf

第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
资料共17页,剩余部分请下载后查看
第9章 颜色
9.1 预定义颜色
9.2 色彩条测试程序
9.3 固定的调色板模式
9.4 定制调色板模式 
9.5 在运行时修改颜色查询表
使用不同的颜色
9.6 颜色API
9.7 基本颜色函数
GUI_GetBkColor()
GUI_GetBkColorIndex()
GUI_GetColor()
GUI_GetColorIndex()
GUI_SetBkColor()
GUI_SetBkColorIndex()
GUI_SetColor()
GUI_SetColorIndex()
9.8 索引和彩色转换
GUI_Color2Index()
GUI_Index2Color()
9.9 查询表(LUT)类
GUI_InitLUT()
GUI_SetLUTColor()
GUI_SetLUTEntry()
第9章 颜色 µC/GUI 支持黑/白,灰度(不同亮度的单色)及彩色显示屏。同一个用户程序可以用于不 同的显示屏,只需要改变 LCD 配置。色彩管理设法为应该显示的任何色彩找到最相近的匹配。 逻辑颜色:在应用中处理的颜色。一种逻辑颜色总是定义为一个 RGB 数值,这是一个 24 位的数值,其中每个基色 8 位,如:0xBBGGRR。因此,白色应该为 0xFFFFFF,黑色应该为 0x000000,大红为 0xFF0000。 物理颜色:显示屏实际显示的颜色。与逻辑颜色一样,同样定义为一个 24 位的 RGB 数值。 在在实际运行的时候,逻辑颜色映射到物理颜色。 对于显示色彩较少的显示屏(例如单色显示屏或 8/16 色 LCD),µC/GUI 通过一个优化版 本的“最小平方偏移搜索”对它们进行转换。它对显示的颜色(逻辑颜色)及 LCD 实际能显 示(物理颜色)的所有有效颜色进行比较,然后使用 LCD 度量认为最接近的颜色。 µC/GUI 中文手册 第 1 页
第 9 章 颜色 9.1 预定义颜色 除自定义颜色之外,在µC/GUI 中预先定义了一些标准的颜色,如下表所示: 定义 颜色 GUI_BLACK GUI_BLUE GUI_GREEN GUI_CYAN GUI_RED GUI_MAGENTA GUI_BROW N GUI_DARKGRAY GUI_GRAY GUI_LIGHTGRAY GUI_LIGHTBLUE GUI_LIGHTGREEN GUI_LIGHTCYAN GUI_LIGHTRED 黑 蓝 绿 青 红 洋红 褐 深灰 灰 浅灰 淡蓝 淡绿 淡青 淡红 GUI_LIGHTMAGENTA 淡洋红 GUI_YELLOW GUI_WHITE 黄 白 说明 0x000000 0xFF0000 0x00FF00 0xFFFF00 0x0000FF 0x8B008B 0x2A2AA5 0x404040 0x808080 0xD3D3D3 0xFF8080 0x80FF80 0x80FFFF 0x8080FF 0xFF80FF 0x00FFFF 0xFFFFFF 范例 /* 将背景色设为洋红 */ GUI_SetBkColor(GUI_MAGENTA); GUI_Clear(); 9.2 色彩条测试程序 下面的色彩条程序用于显示如下所示的 13 种颜色条: 黑 -> 红,白 -> 红,黑 -> 绿,白 -> 绿,黑 -> 蓝,白 - > 蓝,黑 -> 白,黑 -> 黄, 白 -> 黄,黑 -> 青,白 ->青,黑 -> 洋红 及 白 -> 洋红。 这个小程序可以以任何颜色格式用于所有显示屏。当然,结果依赖于显示屏能够显示的 颜色。该程序要求一个尺寸为 320*240 的显示屏以显示所有颜色。该程序用于证明对于显示 屏不同颜色设定的效果。它同时也可能用作一个校验显示屏功能的测试程序,检查有效的颜 第 2 页 µC/GUI 中文手册
第 9 章 颜色 色及灰度,同时纠正颜色转换。屏幕截图来自 Windows 仿真器,如果你的设置和硬件是适当 的,它看起来和你的显示屏实际输出正确的吻合。该程序在随µC/GUI 一道提供的范例中的名 字为:COLOR_ShowColorBar.c。 /*-------------------------------------------------------------------------- 文件: COLOR _ShowColorBar.c 目的: 绘制一个色彩条的例子 --------------------------------------------------------------------------*/ #include “GUI.H” /*************************************************************************** * 绘制 13 种颜色的色彩条 * ***************************************************************************/ void ShowColorBar(void) { int x0 = 60, y0 = 40, yStep = 15, i; int NumColors = LCD_GetDevCap(LCD_DEVCAP_NUMCOLORS); int xsize = LCD_GetDevCap(LCD_DEVCAP_XSIZE) - x0; GUI_SetFont(&GUI_Font13HB_1); GUI_DispStringHCenterAt("µC/GUI-sample:Show color bars", 160, 0); GUI_SetFont(&GUI_Font8x8); GUI_SetColor(GUI_WHITE); GUI_SetBkColor(GUI_BLACK); #if(LCD_FIXEDPALETTE) GUI_DispString("Fixed palette: "); GUI_DispDecMin(LCD_FIXEDPALETTE); #endif GUI_DispStringAt("Red", 0, y0 + yStep); GUI_DispStringAt("Green", 0, y0 + 3 * yStep); GUI_DispStringAt("Blue", 0, y0 + 5 * yStep); GUI_DispStringAt("Grey", 0, y0 + 6 * yStep); GUI_DispStringAt("Yellow", 0, y0 + 8 * yStep); GUI_DispStringAt("Cyan", 0, y0 + 10 * yStep); GUI_DispStringAt("Magenta", 0, y0 + 12 * yStep); for(i=0; i < xsize; i++) { µC/GUI 中文手册 第 3 页
第 9 章 颜色 U16 cs =(255 *(U32)i) / xsize; U16 x = x0 + i; ; /* 红色 */ GUI_SetColor(cs); GUI_DrawVLine(x, y0, y0 +yStep - 1); GUI_SetColor(0xff +(255 - cs) * 0x10100L); GUI_DrawVLine(x, y0 +yStep, y0 + 2 * yStep - 1); /* 绿色 */ GUI_SetColor(cs<<8); GUI_DrawVLine(x, y0 + 2 * yStep, y0 + 3 * yStep - 1); GUI_SetColor(0xff00 +(255 - cs) * 0x10001L); GUI_DrawVLine(x, y0 + 3 * yStep, y0 + 4 * yStep - 1); /* 蓝色 * / GUI_SetColor(cs * 0x10000L); GUI_DrawVLine(x, y0 + 4 * yStep, y0 + 5 * yStep - 1); GUI_SetColor(0xff0000 +(255 - cs) * 0x101L); GUI_DrawVLine(x, y0 + 5 * yStep, y0 + 6 * yStep - 1); /* 灰色 */ GUI_SetColor((U32)cs * 0x10101L); GUI_DrawVLine(x, y0 + 6 * yStep, y0 + 7 * yStep - 1); /* 黄色 */ GUI_SetColor(cs * 0x101); GUI_DrawVLine(x, y0 + 7 * yStep, y0 + 8 * yStep - 1); GUI_SetColor(0xffff +(255 - cs) * 0x10000L); GUI_DrawVLine(x, y0 + 8 * yStep, y0 + 9 * yStep - 1); /* 青色 */ GUI_SetColor(cs * 0x10100L); GUI_DrawVLine(x, y0 + 9 * yStep, y0 + 10 * yStep - 1); GUI_SetColor(0xffff00 +(255 - cs) * 0x1L); GUI_DrawVLine(x, y0 + 10 * yStep, y0 + 11 * yStep - 1); /* 洋红 */ GUI_SetColor(cs * 0x10001); GUI_DrawVLine(x, y0 + 11 * yStep, y0 + 12 * yStep - 1); GUI_SetColor(0xff00ff +(255 - cs) * 0x100L); GUI_DrawVLine(x, y0 + 12 * yStep, y0 + 13 * yStep - 1); } 第 4 页 µC/GUI 中文手册
第 9 章 颜色 /*************************************************************************** * 主函数 * ***************************************************************************/ void main(void) { } GUI_Init() ; ShowColorBar(); while(1) GUI_Delay(100); 9.3 固定的调色板模式 下表列出了有效的固定调色板颜色模式及必须的“#define”(需要在文件 LCDConf.h 中 定义以取得这些模式)。 颜色模式 有效的颜色数 LCD_FIXEDPALETTE LCD_SWAP_RB 1 2 4 111 222 233 -233 323 -323 332 -332 444 555 -555 565 -565 8666 2 (黑和白) 4 (灰度) 16 (灰度) 8 64 256 256 256 256 256 256 4096 32768 32768 65536 65536 232 详细的描述如下: 1 2 4 111 222 233 233 323 323 332 332 444 555 555 565 565 8666 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 0 µC/GUI 中文手册 第 5 页
第 9 章 颜色 1 模式:1 bpp (黑和白) 该模式必须用于每像素 1 位的单色显示屏。 有效颜色数量:2 2 模式:2 bpp (4 级灰度) 该模式必须用于每像素 2 位的单色显示屏。 有效颜色数量:2×2 = 4. 4 模式:4 bpp(16 级灰度) 该模式必须用于每像素 4 位的单色显示屏。 有效颜色数量:2×2×2×2=16 111 模式:3 bpp (每种基色 2 级) 如果基本的 8 种颜色够用的话可以选择这种 模式。如果你的硬件只支持每像素每基色 1 位,或者你没有足够的视频内存用于更高的色 彩浓度采用这种模式。 有效颜色数量:2×2×2=8 第 6 页 µC/GUI 中文手册
第 9 章 颜色 222 模式:6 bpp (每种基色 4 级) 如果你的硬件没有一个调色板用于每种单独 的颜色,该模式是一种很好的选择。每像素的 每种基色保留 2 位;通常一个像素保存为一个 字节。 有效颜色数量:4×4×4=64 233 模式:2 位蓝色,3 位绿色, 3 位红色 该模式支持 256 种颜色。3 位用于颜色的红色 和绿色部分,2 位用于蓝色部分。如图所示, 结果是绿色和红色为 8 级,而蓝色为 4 级。有 效颜色数量:4×8×8=256 基色顺序:BBGGGRRR -233 模式:2 位红色,3 位绿色, 3 位蓝色,红蓝互换 该模式支持 256 种颜色。3 位用于颜色的绿色和蓝色部分,2 位用于红色部分。有效的颜色与 332 模式是一样的。结果绿色和蓝色为 8 级,而红色为 4 级。 有效颜色数量:4×8×8=256 基色顺序:RRGGGBBB 323 模式:3 位蓝色,2 位绿色,3 位红色 该模式支持 256 种颜色。3 位用于颜色的红色 和蓝色部分,2 位用于绿色部分。如图所示, 结果是蓝色和红色为 8 级,而绿色为 4 级。 有效颜色数量:8×4×8=256 基色顺序:BBBGGRRR µC/GUI 中文手册 第 7 页
第 9 章 颜色 111 -323 模式:3 位红色,2 位绿色,3 位蓝色,红蓝互换 该模式支持 256 种颜色。3 位用于颜色的红色和蓝色部分,2 位用于绿色部分。有效的颜色与 323 模式是一样的。结果红色和蓝色为 8 级,而绿色为 4 级。 有效颜色数量:8×4×8=256 基色顺序:RRRGGBBB 332 模式: 3 位蓝色,3 位绿色,2 位红色 该模式支持 256 种颜色。3 位用于颜色的蓝色 和绿色部分,2 位用于红色部分。如图所示, 结果是蓝色和绿色为 8 级,而红色为 4 级。 有效颜色数量: 8×8×4=256 基色顺序:BBBGGGRR -332 模式:3 位红色,3 位绿色,2 位蓝色,红蓝互换 该模式支持 256 种颜色。3 位用于颜色的红色和绿色部分,2 位用于蓝色部分。有效的颜色与 233 模式是一样的。结果红色和绿色为 8 级,而蓝色为 4 级。 有效颜色数量:8×8×2=256 基色顺序:RRRGGGBB 444 模式:4 位红色,4 位绿色,4 位蓝色 红,绿,蓝每部分平均分配 4 位。 有效颜色数量:16×16×16=4096 基色顺序:BBBBGGGGRRRR 第 8 页 µC/GUI 中文手册
分享到:
收藏