我使用libcairo2,版本1.13.0~20140204-0ubuntu1将一些PNG文件放入X11 Pixmap。它基本上有效,但红色和蓝色通道交换。我知道这与字节序或BGR与RGB格式有关。但是,我没有在Cairo或X11库中找到任何部分进行此交换。
我目前的代码在这里:
cairo_surface_t* cairo_source = cairo_image_surface_create_from_png(filename.c_str());
Pixmap pixmap_dest = XCreatePixmap(display,
RootWindow(display, screen),
cairo_image_surface_get_width(cairo_source),
cairo_image_surface_get_height(cairo_source),
DefaultDepth(display, screen)
);
cairo_surface_t* cairo_dest = cairo_xlib_surface_create(display,
pixmap_dest,
DefaultVisual(display, screen),
cairo_image_surface_get_width(cairo_source),
cairo_image_surface_get_height(cairo_source)
);
cairo_t* cr = cairo_create(cairo_dest);
cairo_set_source_surface(cr, cairo_source, 0.0, 0.0);
cairo_paint(cr);
有关如何更改/解决此问题的任何想法?