我正在使用QGLWidget(用于OpenGL的Qt小部件),并希望能够将小部件显示的屏幕捕获为JPEG文件.我怎样才能做到这一点?是否有一个函数可以将窗口小部件当前显示的内容作为图像返回?
Mic*_*elM 16
通常使用OpenGL,您可以使用该glReadPixels()
函数从帧缓冲区读取.这会将帧缓冲内容放入已分配的缓冲区中.然后,您需要一个将其转换为JPEG的函数.
但是,在使用时QGLWidget
,可以使用其grabFrameBuffer()
方法将帧缓冲区内容作为QImage
对象获取.这可能是更好的方法.您可以获取帧缓冲内容,然后使用QImage::save()
保存到文件.
如果你转到Qt 5 QOpenGLWidget
,你会发现它有类似的
grabFrameBuffer()
方法.
QImage img(mywidget.size());
QPainter painter(&img);
mywidget.render(&painter);
img.save("/some/file.jpg");
Run Code Online (Sandbox Code Playgroud)