我正在将SVGA驱动的GUI软件升级到Qt驱动的GUI软件。其中一个问题是进行颜色转换。 由于SVGA使用256色模型,Qt使用RGB颜色模型(实际上它也支持其他模型;但我使用RGB)。因此我需要256色到等效RGB颜色的线性映射。
有没有任何公式可以做到这一点?
注意:我使用C / C ++作为构建语言。
答案 0 :(得分:1)
您需要确定正在使用的调色板。这应该在应用程序中编码。调色板是256个RGB值的数组。要使用颜色,请使用数组索引(单个字节)。获得调色板信息后,您将获得所需的线性映射。
VGA模式下有一个默认调色板。大多数程序都会自己设置,但无论哪种方式,调色板信息都驻留在显卡上。你应该能够查询它,但我无法帮助你。我上次编写任何代码的时间大约是15年前,当时我们都知道要为各种图形操作写入哪些内存地址。
查找调色板的另一种方法:如果您能够修改该应用程序以写入一堆像素,只需绘制一个包含所有256个颜色值的16x16块,获取屏幕截图然后从中恢复调色板。