繁体   English   中英

如何使用Qt5绘制X11 Pixmap

[英]How to paint an X11 Pixmap using Qt5

我正在尝试将X11 Pixmap绘制到QWidget

在过去使用Qt4.x时,我会利用QPixmap::fromX11Pixmap来创建可以在绘画中轻松使用的QPixmap 但是,此功能已在Qt5中删除,据我所知,该功能尚未在Qt Framework的其他位置提供。

虽然我已经能够创建和分配X11 Pixmap,但是我还没有找到任何解决方案来执行绘画。 欢迎任何建议/解决方案!

我遇到了同样的问题,没有找到任何答案。 经过一些破解后,我来到了这个解决方案。

// Initialize your X11 enviroment.
Display* display ...
Pixmap pixmap ... 
/* Do your pixmap drawing HERE */
// Make sure all drawing have been done
XFlush(display);
// Convert your Pixmap to XImage
XImage *image = XGetImage(display, pixmap, 0, 0, width, height, 0xFFFFFFFF, ZPixmap);
// Convert XImage to QImage
QImage tempImage = qimageFromXImage(image);
// Destroy temporal XImage
XDestroyImage(image);
// Finally create a QPixmap
QPixmap finalPixmap = QPixmap::fromImage(tempImage);

函数qimageFromXImage(...)的代码可以在https://github.com/adobe/webkit/blob/master/Source/WebCore/plugins/qt/QtX11ImageConversion.h中找到。您可以将标头和实现复制到您的源树。

问题解决了! 可以与QQuickPaintedItem或QGraphicsItem一起使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM