前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UGL之颜色处理

UGL之颜色处理

作者头像
Taishan3721
发布2021-11-04 10:28:48
9550
发布2021-11-04 10:28:48
举报
文章被收录于专栏:这里只有VxWorks这里只有VxWorks

计算机里通常使用RGB色彩模式,例如RGB565,就是用两个字节表示一个像素的颜色,其中红绿蓝分别用5、6、5个bit。还有一些RGB555、RGB666、ARGB4444之类的。而所谓的真彩色,使用4个字节表示一个像素,通常是RGB888,或者ARGB8888,其中A的全称是Alpha通道,指的是透明度

WindML5的显卡驱动基本都已经支持RGB888的真彩色

用WindML语句把光的三原色、颜色的三原色,以及黑白色都画出来,效果如下

再多画几个

RGB888一共可以表示256*256*256=16777216种颜色,这基本得用两个4K的屏才能显示完整,而且也超过了人眼能区分的颜色数量。不过,只把RGB两两混合的画出来,还是比较容易的

而Windows的"画图"中,除了RGB,还有一种ESL模式

这个ESL与HSL/HSB含义差不多,而与RGB之间也仅是一个简单的转换关系。写个函数很容易实现它们之间的转换

代码语言:javascript
复制
Red             红色值 
Green           绿色值 
Blue            蓝色值 

HSL/ESL
H/E: Hue        色相    0 - 239
S:   Saturation 饱和度  0 - 240
L:   Lightness  明度    0 - 240

HSB/HSV
H:   Hue        色相
S:   Saturation 饱和度
B:   Brightness 亮度
V:   Value      值(代表深浅)

Contrast        对比度

Brightness      亮度 
Lightness       明度 
Luminance       发光度

Brightness      主观上感知光的强弱
Lightness       目标与周边物体的明亮对比,即主观上明度的强弱
Luminance       客观测量发光体的亮度

既然有了RGB到ESL的转换,那很容易就可以实现调整饱和度和亮度的函数了

例如下面的右图是将左图的ESL中的饱和度调整为最大,颜色显得更鲜艳

饱和度调到最小,就是灰度图了

而如果改为调整左图中ESL的亮度呢?提高亮度就是所有颜色都明亮一些。最大值,就是纯白色了

降低亮度,就是所有颜色暗一些。最暗,就是纯黑色了

另外还有一个对比度。这个概念,貌似还没有什么标准。基本规则是: 提高对比度,就是让亮的更亮,暗的更暗

降低对比度,就是所有颜色的RGB值向中间靠拢

有点意思

我是泰山,专注VX 17年! 一起学习,共同进步!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 这里只有VxWorks 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档