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