32位全彩色与24位全彩色有啥区别

真彩色与图像显示技术
本文详细介绍了真彩色的概念及其在计算机图像中的应用,包括真彩色、伪彩色和直接色的区别,以及它们如何影响图像质量。同时探讨了真彩色在不同位深度下的表现,并举例说明了真彩色在现代显示技术中的发展。

http://blog.youkuaiyun.com/zhangxingxin/article/details/6508106


     真彩色是指图像中的每个像素值都分成R、G、B三个基色分量,每个基色分量直接决定其基色的强度,这样产生的色彩称为真彩色。真彩色图像是一种用三个或更多字节描述像素的计算机图像存储方式。
       计算机表示颜色也是用二进制。16位色的发色总数是65536色,也就是2的16次方;24位色被称为真彩色,它可以达到人眼分辨的极限,发色数是1677万多色,也就是2的24次方。但32位色就并非是2的32次方的发色数,它其实也是1677万多色,不过它增加了256阶颜色的灰度,为了方便称呼,就规定它为32位色。少量显卡能达到36位色,它是24位发色数再加512阶颜色灰度。 
       至于32位色和16位色肉眼分辨不出来?其实如果你用两台品牌型号都一样的显示器,分辨调不同的色,就能看出区别,而只是一台机的反复转换就比较难分辨出来。如果你用的是WINDOWS XP,在WINDOWS启动时有个“欢迎使用”字样的界面,那里的兰色颜色过渡就很容易看出区别,16位色的颜色过渡很容易看出被分层了不自然;而用32位色就相当柔和,过渡很自然。
        真彩色(麦金塔电脑用户则为百万色)图像是一种用三个或更多字节描述像素的计算机图像存储方式。一般来说,前三个通道都会各用一个字节表示,如红绿蓝(RGB)或者蓝绿红(BGR)。如果存在第四个字节,则表示该图像采用了阿尔法通道。然而,实际系统往往用多于8位 (即1字节)表达一个通道,如一个48位的扫描仪等。这样的系统都统称为真彩色系统。 
        每一色光以8位元表示,每个通道各有256(28)种阶调,三色光交互增减,RGB三色光能在一个像素上最高显示24位1677万色(256*256*256=16,777,216),这个数值就是电脑所能表示的最高色彩。普遍认为人眼对色彩的分辨能力大致是一千万色,因此由RGB形成的图像均称做真彩色
      尽管一个阿尔法通道只是一个透明通道,从图像角度来说意义不大,然而这种32位的图像却在桌面时代大  行其道。因为有了Alpha通道,在屏幕上描绘半透明图像变得简单了,在电脑桌面上能更为轻而易举地实现半透明窗口、菜单渐隐和阴影等效果。
        虽然阿尔法通道对于显示缓冲来说没有意义,但是在现实系统中仍然使用着 32 位真彩色,这是因为在 32 位的位图中对于像素的寻址更加容易。对 24 位像素寻址需要乘以 3,这样比通过移位就可以实现的乘以 4 的计算量更大。
        以上的解释都是站在微软的立场上阐述的,因为其产品视窗系列,即Windows操作系统,均以24位色为真彩色。实际上,真彩色也可以是一种不借助于色彩搜寻表(Color Look-Up Table,CLUT)的显示模式。因此真彩色也可以以各种色彩深度表示(8位,16位,24位……只要不涉及色彩搜寻表)。
        描述一幅图像需要使用图像的属性。图像的属性包含分辨率、像素深度、真/伪彩色、图像的表示法和种类等。本节介绍前面三个特性。搞清真彩色、伪彩色与直接色的含义,对于编写图像显示程序、理解图像文件的存储格式有直接的指导意义,也不会对出现诸如这样的现象感到困惑:本来是用真彩色表示的图像,但在VGA显示器上显示的图像颜色却不是原来图像的颜色。
        真彩色是指在组成一幅彩色图像的每个像素值中,有R,G,B三个基色分量,每个基色分量直接决定显示设备的基色强度,这样产生的彩色称为真彩色。例如用RGB 5∶5∶5表示的彩色图像,R,G,B各用5位,用R,G,B分量大小的值直接确定三个基色的强度,这样得到的彩色是真实的原图彩色。在许多场合,真彩色图通常是指RGB 8:8:8,即图像的颜色数等于224,也常称为全彩色(full color)图像。但在显示器上显示的颜色就不一定是真彩色,要得到真彩色图像需要有真彩色显示适配器,目前在PC上用的VGA适配器是很难得到真彩色图像的。
        伪彩色图像的含义是,每个像素的颜色不是由每个基色分量的数值直接决定,而是把像素值当作彩色查找表 (color look-up table,CLUT)的表项入口地址,去查找一个显示图像时使用的R,G,B强度值,用查找出的R,G,B强度值产生的彩色称为伪彩色。彩色查找表CLUT是一个事先做好的表,表项入口地址也称为索引号。
        直接色每个像素值分成R,G,B分量,每个分量作为单独的索引值对它做变换。也就是通过相应的彩色变换表找出基色强度,用变换后得到的R,G,B强度值产生的彩色称为直接色。它的特点是对每个基色进行变换。用这种系统产生颜色与真彩色系统相比,相同之处是都采用R,G,B分量决定基色强度,不同之处是后者的基色强度直接用R,G,B决定,而前者的基色强度由R,G,B经变换后决定。因而这两种系统产生的颜色就有差别。试验结果表明,使用直接色在显示器上显示的彩色图像看起来真实、很自然。这种系统与伪彩色系统相比,相同之处是都采用查找表,不同之处是前者对R,G,B分量分别进行变换,后者是把整个像素当作查找表的索引值进行彩色变换。
        发光二极管(Lighted Electronic Diode)作为显示器材早期仅应用于仪器仪表等低亮度领域,随着半导体材料技术的不断发展,亮度逐渐提高,稳定性及寿命逐渐延长,色彩逐渐丰富,迅速进入大屏幕工程显示领域。尤其在体育场馆等场合的应用,因其超高亮度,色彩鲜艳,长寿稳定,已成一统天下之势。而近几年LED显示材料的产量迅猛增长,成本迅速下降,使其进入户内高密度大屏幕市场成为可能。户内LED大屏幕的发展呈现如下几个发展阶段: 
 1. 第一代 单色LED显示屏
          以单红色为基色,显示文字及简单图案为主,主要用于通知通告及客流引导系统。
2. 第二代 双基色多灰度显示屏
          以红色及黄绿色为基色,因没有蓝色,只能称其为伪彩色,可以显示多灰度图象及视频,目前在国内广泛应用于电信,银行,税务,医院,政府机构等场合,主要显示标语,公益广告及形象宣传信息。
3. 第三代 全彩色(full color)多灰度显示屏
         以红色,蓝色及黄绿色为基色,可以显示较为真实的图象,目前正在逐渐替代上一代产品。
4. 第四代 真彩色(true color)多灰度显示屏
        以红色,蓝色及纯绿色为基色,可以真实再现自然界的一切色彩(在色坐标上甚至超过了自然色彩范围)。可以显示各种视频图象及彩色广告,其艳丽的色彩,鲜亮的高亮度,细腻的对比度,在宣传广告领域应用具有极好的视觉震撼力。

<think>嗯...用户问的是Qt代码编辑器如何设置代码高亮颜色的问题。看起来用户遇到了代码显示黑的情况,这确实会严重影响编程体验。从用户描述看,可能是高亮主题配置不当,或者是语法高亮功能没启用。用户提到了"引用"内容,虽然那些引用当前问题关联不大。第一条关于终端提示符颜色的是系统权限提示,第二条是麒麟软件的更新日志,第三条是编程术语。不过可以注意到用户对"颜色显示"这个概念比较敏感,所以解答时要重点突出颜色配置部分。Qt的高亮设置主要在QTextDocument的语法高亮机制里。需要确认几个关键点:首先检查是否加载了高亮器,默认应该是启用的;然后看当前主题是否黑色系;最后检查编辑器组件的palette设置。用户可能是新建项目时没注意勾选相关配置,或者不小心切到了自定义主题。考虑到用户能准确说出"代码高亮"这个术语,应该有一定Qt基础,可以给些进阶配置方法。但也不能太复杂,毕竟用户现在连基本颜色都没出来。分三步走比较稳妥:先验证是否启用高亮,再指导修改主题,最后提下自定义颜色的方法作为补充。啊...突然想到Qt版本差异。5.0之后高亮器改用QSyntaxHighlighter了,而用户没说明版本,得同时包含新旧版本的设置方式。另外LinuxWindows的默认主题可能不同,这个也得区分说明。</think> 在Qt中设置代码高亮显示彩色文本,需要检查以下几个关键配置步骤: ### 解决步骤 1. **确认高亮器已启用** ```cpp QSyntaxHighlighter *highlighter = new YourLanguageHighlighter(textDocument); // 确保已为编辑器设置正确的高亮器(如C++、Python等) ``` 2. **检查高亮主题** ```cpp // 在QPlainTextEdit/QTextEdit中设置调色板 QPalette palette = editor->palette(); palette.setColor(QPalette::Text, Qt::black); // 基础文本色 palette.setColor(QPalette::Base, Qt::white); // 背景色 editor->setPalette(palette); ``` *若使用暗色主题需对应调整颜色值* 3. **验证语法规则** ```cpp // 在高亮器子类中确保设置了彩色规则(示例): void Highlighter::highlightBlock(const QString &text) { QTextCharFormat keywordFormat; keywordFormat.setForeground(Qt::darkBlue); // ✅ 关键:设置彩色 // 为关键词设置格式 for (const QString &pattern : keywords) { QRegExp expression(pattern); setFormat(expression.indexIn(text), expression.matchedLength(), keywordFormat); } } ``` 4. **检查编辑器配置** ```cpp // 确保启用代码高亮功能 editor->setSyntaxHighlighter(highlighter); // Qt 5.x及之前 // 或 editor->setHighlighter(highlighter); // 部分新版本 ``` ### 验证方法 - **查看默认主题**:使用`editor->styleSheet()`检查是否被覆盖 - **输出日志**:`qDebug() << "Current syntax:" << highlighter->document()->metaObject()->className();` - **重置配置**:`editor->setStyleSheet("");` 排除样式冲突 > ⚠️ **常见问题根源**: > 1. 自定义主题覆盖了语法高亮颜色(检查`.qss`文件) > 2. 高亮器未正确关联到文档对象 > 3. 高亮规则未设置前景色(`setForeground()`缺失) > 4. Qt版本兼容问题(4.x5.x+的API差异) ### 扩展配置 ```cpp // 自定义多色规则示例 QTextCharFormat commentFormat; commentFormat.setForeground(Qt::darkGreen); // 注释设为绿色 QRegExp commentRegex("//.*$"); setFormat(commentRegex.indexIn(text), commentRegex.matchedLength(), commentFormat); ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值