我可以将 PNG 图像加载到内存中并使用 libpng 从中获取原始像素数据,还可以使用 XCB 或普通 X11 创建具有空白背景的窗口。
接下来我应该怎么做才能在窗口中显示图像?
XLib方法如下:
XImage
深度适合您的视觉的结构XPutImage
第二步可以通过调用XPutPixel
每个单独的像素来实现。您必须将 RGB 值转换为像素值。对于 15、- 16、- 24- 或 32 位视觉效果,这是使用位掩码进行的简单操作(用于visual->red_mask
确定将红色组件放置在何处等)。如果要支持 8 位深度,则必须使用抖动,并分配和使用适当的颜色图,可能是 216 元素颜色立方体。幸运的是,如今只有 8 位的硬件很少见。
如果调用XPutPixel
对您来说太慢,您将不得不执行它的功能。例如,使用此来源作为指导。
xcb 有一个名为 xcb-util-image 的库,其功能与 XImage 类似。我不熟悉它。