小编gui*_*uix的帖子

将两个16位RGB颜色与alpha混合相结合

我有一个TFT显示屏,可以绘制16位颜色,格式RGB 565.我想为我显示的内容添加一些透明度.

假设我有一个黑色背景(0x0000),我想画一个半透明的白色前景(0xFFFF)(不透明度由另一个字节控制),所以它会显示为灰色.如何以相同的RGB 565格式计算16位灰色,这样我就可以将它发送到我的TFT并且它会正确显示(可能有一些损失,但我不在乎)?

我需要一个功能,如:

unsigned short calcColor_RGB565(unsigned short background_RGB565, unsigned short foreground_RGB565, unsigned char opacity)
Run Code Online (Sandbox Code Playgroud)

calcColor_RGB565(0x0000, 0xFFFF, 128) 会导致0x8410(或0x1084,这并不重要,因为我向TFT发送两个单独的字节,所以如果需要我只会反转顺序)

感谢任何可以帮助我的人,我已经尝试了一些东西,但我无法得到正确的结果,甚至没有关闭:/.

类似C的伪代码赞赏,但我更喜欢解释如何做到这一点.

编辑:忘了说,我希望它尽可能快,因为它是一个旧的微处理器,所以如果分别计算2个字节更快(所以我也不必在以后将它们分开)然后我'我对这种优化非常感兴趣.

编辑9月27日:5天后,仍未解决.我可以从rgb565转换为rgb8888,进行alpha混合然后转换回rgb565,但这太慢了,必须有更好的方法!

c alphablending colors

5
推荐指数
2
解决办法
3233
查看次数

标签 统计

alphablending ×1

c ×1

colors ×1