当前位置:首页 > IT技术

Qt基础——获取QGraphicsScene的缩略图即导出到图片

时间:2019-06-23 09:42:07来源:IT技术作者:SEO探针小编阅读:88次「手机版」
 

qgraphicsscene

是应用了他的render函数,render的作用是:

[cpp] view plain copy

  1. Renders the source rect from scene into target, using painter. This function is useful for capturing the contents of the scene onto a paint device, such as a QImage (e.g., to take a screenshot), or for printing with QPrinter. For   
  2.   
  3. If source is a null rect, this function will use sceneRect() to determine what to render. If target is a null rect, the dimensions of painter's paint device will be used.  
  4.   
  5. The source rect contents will be transformed according to aspectRatioMode to fit into the target rect. By default, the aspect ratio is kept, and source is scaled to fit in target.  

代码如下:

[cpp] view plain copy

  1. //get thumbnail  
  2. QImage image(130 * mSceneSize.width()/ mSceneSize.height(),130 ,QImage::Format_ARGB32);     
  3. QString pngName = currentPageID+"_scene.png";  
  4. QPainter painter(&image);  
  5. painter.setRenderHint(QPainter::Antialiasing);  
  6. scene->render(&painter);     
  7. bool saveSuccess =  image.save(pngName);    
  8. Q_ASSERT(saveSuccess == true);  

有两个注意事项:

  • 如果你把QImage image(130 * mSceneSize.width()/ mSceneSize.height(),130 ,QImage::Format_ARGB32);   写成QImage image。无论如何image都是无法save成功的。因为image没有初始化。
  • 如果你的scene里有的item/widget的坐标位于目前可显示的外面,意思是你的scene现在大小是100*100,但是有一个item的坐标位于100*101,那么调用scene->render时会有ASSERT错误:

    ---------------------------

    Microsoft Visual C++ Debug Library

    ---------------------------

    Debug ERROR!

    Program: ...\Win32\Debug\Maker.exe

    Module: 5.0.1

    File: global\qglobal.cpp

    Line: 1951

    ASSERT: "!item->d_ptr->itemDiscovered" in file graphicsview\qgraphicsscenebsptreeindex.cpp, line 343

    (Press retry to debug the APPlication)

    ---------------------------

    Abort   Retry   ignore   

    ---------------------------

    你当然可以忽略掉他,在release模式下是没有此类问题的。

当然了你用QGraphicsView的render方法也可以获得view的缩略图。

http://blog.csdn.net/LCL_data/article/details/8731892

相关阅读

关于QtGraphics编程的几点经验总结_qgraphicsscene

转载自:http://www.niubb.com/riji/2015/10-01/12524.htmlQtGraphics模块用于显示二维的图形图像,所以三维的事情就不要找它了,应该

关于QtGraphics编程的几点经验总结_qgraphicsscene

转载自:http://www.niubb.com/riji/2015/10-01/12524.htmlQtGraphics模块用于显示二维的图形图像,所以三维的事情就不要找它了,应该

Qt工作笔记-QGraphicsScene练习【Qt图形框架练习】

程序运行如下图所示:程序结构如下:代码如下:directitem.h#ifndef DIRECTITEM_H #define DIRECTITEM_H #include <QObject> #include

分享到:

栏目导航

推荐阅读

热门阅读