我可以将 PNG 图像加载到内存中并使用 libpng 从中获取原始像素数据,我还可以使用 XCB 或普通 X11 创建具有空白背景的窗口。
接下来我应该怎么做才能在窗口内显示图像?
最佳答案
XLib方法如下:
XImage
结构 XPutImage
第二步可以通过为每个单独的像素调用
XPutPixel
来实现。您必须将 RGB 值转换为像素值。对于 15、- 16、- 24 位或 32 位视觉效果,这是使用位掩码的微不足道的操作(使用 visual->red_mask
确定放置红色组件的位置等)。如果您想支持 8 位深度,您必须使用抖动,并分配和使用适当的颜色图,可能是一个 216 元素的颜色立方体。幸运的是,如今仅 8 位的硬件很少见。如果调用
XPutPixel
对您来说太慢了,您将不得不在线实现它的功能。使用例如this source 指导。xcb 有一个名为 xcb-util-image 的库,其功能与 XImage 相似。我不熟悉它。
关于linux - 如何用 XCB 或 X11 显示全彩图像?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24963361/