zoukankan      html  css  js  c++  java
  • Qt基础——获取QGraphicsScene的缩略图即导出到图片

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

    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 
    
    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.
    
    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.

    代码如下:
            //get thumbnail
            QImage image(130 * mSceneSize.width()/ mSceneSize.height(),130 ,QImage::Format_ARGB32);   
            QString pngName = currentPageID+"_scene.png";
            QPainter painter(&image);
            painter.setRenderHint(QPainter::Antialiasing);
            scene->render(&painter);   
            bool saveSuccess =  image.save(pngName);  
            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模式下是没有此类问题的。
  • 相关阅读:
    java基础(初始化和清理)
    jquery的常用操作(转载)+ 开发中经常犯的错误总结(原创) (不断补充)
    java基础常见错误归纳(值传递和引用传递)
    FormPanel 综合使用 忆江南
    MyEclipse下Jquery代码自动提示 忆江南
    HQL查询 忆江南
    MD5密码保护 忆江南
    FormPanel数据提交 忆江南
    新手上路
    编码总结,以及对BOM的理解
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/2987641.html
Copyright © 2011-2022 走看看