这里弄出两段关键代码:

一个是保存图片的函数:

void UICanvasView::saveToImage(const QString& imagePath)
{m_pScene->SetImageSaveFlag(true);int width = m_pScene->width();int height = m_pScene->height();QPixmap pixSaveImage(width, height);pixSaveImage.fill(QColor(0, 0, 0, 0));//用透明色填充QPainter painterTanns(&pixSaveImage);painterTanns.setRenderHint(QPainter::Antialiasing, true);painterTanns.setRenderHint(QPainter::TextAntialiasing, true);painterTanns.setRenderHint(QPainter::SmoothPixmapTransform, true);cleanAllSelected();m_pScene->render(&painterTanns);pixSaveImage.save(imagePath);m_pScene->SetImageSaveFlag(false);return;
}

为什么要SetImageSaveFlag,这是因为很多QGraphicsScene人的这里可能设置了背景函数:


void UICanvasScene::SetImageSaveFlag(bool bFlag)//正在保存图片时,要设置背景透明
{m_IsSaveImageingFlag = bFlag;
}void UICanvasScene::drawBackground(QPainter *painter, const QRectF &rect)
{if (m_IsSaveImageingFlag){//保存中的时候painter->fillRect(rect, QColor(0, 0, 0,0));QRectF sceneRect = this->sceneRect();QColor colSet = m_pBackgroundColorAttribute->getValue().value<QColor>();QColor newCol(255,255,255, 0);painter->fillRect(sceneRect, QBrush(newCol));return QGraphicsScene::drawBackground(painter, rect);}else{painter->fillRect(rect, QColor(60, 60, 60));QRectF sceneRect = this->sceneRect();painter->fillRect(sceneRect, QBrush(m_pBackgroundColorAttribute->getValue().value<QColor>()));return QGraphicsScene::drawBackground(painter, rect);}}

所以保存时要特意设置一下,然后看下生成的图片吧,有ps看吧,只看图片也不知道透明了没,哈哈

QGraphicsScene 中的场景保存成透明图片相关推荐

  1. ps4将图片弄成透明图片

    ps4将图片弄成透明图片 一,打开图片, 二.找到图层,双击小锁,让其变成图层0  ,如图1.png 三.点击通道,再选择到最后一个     ,入土2.png 四.看图,按住左键,将红色框框的东西拖动 ...

  2. 海康威视API-单帧数据捕获并保存成JPEG图片NET_DVR_CaptureJPEGPicture

    函 数: BOOL NET_DVR_CaptureJPEGPicture(LONG lUserID, LONG lChannel, LPNET_DVR_JPEGPARA lpJpegPara, cha ...

  3. unity sprite保存成PNG图片

    图集拆分后可以将子图单独保存成png图片,使用如下代码, var sprites = Resources.LoadAll<Sprite>("main"); Debug. ...

  4. svg文件保存成svg图片并通过cairosvg库转换png图片

    之所以会碰到这个需求是因为在做暗网一个站点采集时候其站点验证码均采用svg矢量图格式,一般的打码平台是不能够识别svg格式图片的所以我们需要将如下图所示的一堆转换成svg图片在通过cairosvg转换 ...

  5. Three.js地球开发—4.Three.js渲染场景保存成贴图

    保存Three.js canvas画布上的信息,设置preserveDrawingBuffer为true,创建一个超链接元素,用来下载保存数据的文件,通过超链接herf属性,设置要保存到文件中的数据. ...

  6. 【切片技巧】PS 切片时 保存成透明背景png格式图片

    1.先切片选中要进行切片的部分: 2.将有关的背景图层全部隐藏: 3.点击"文件->存储为Web所用格式",按住shift,然后用鼠标点击选中的切片(否则可能会有一些无关的切 ...

  7. ps里jpg格式的图怎么保存成透明的

    在photoshop里面打开图片文件--在工具条里选择"魔术棒工具"将要改为透明的区域选中并删除 选择"帮助"菜单下的"输出透明图像",这时 ...

  8. photoshop保存背景透明图片办法

    将图片背景删除,保存为png格式即可,注意颜色必须为RGB模式,否则存储为中找不到png这个格式.

  9. 网页录屏将视频截图保存成gif图片并压缩的方法超详细

    我在一个网站上找到一个视频素材很不错.于是利用360浏览器的网页录屏功能.先把视频录下来了.然后.使用迅雷播放器的gif工具.截取了需要的界面.然后手动选中要生成的时间轴!然后选择不同的分辨率即可! ...

最新文章

  1. java环境变量javac不能成功 win7_Java开发:Java环境搭建
  2. PM应该找哪些副业?
  3. 为什么1900年不是闰年
  4. ps自定义形状工具_PS教程——用PS绘制虚线的三种方法
  5. 无需再忙了:Lambda-S3缩略图,由SLAppForge Sigma钉牢!
  6. hive参数配置使用
  7. Python习题week1
  8. java多级目录文件是否存在_Java文件夹操作,判断多级路径是否存在,不存在就创建(包括windows和linux下的路径字符分析)...
  9. BZOJ 4031: [HEOI2015]小Z的房间 Matrix-Tree定理
  10. 生产企业ERP流程是什么
  11. 用GetData软件自动读取图中的数据
  12. TT畅聊物联网(一)-初识物联网
  13. 2019.08-2020.06计算机考研指导总结篇
  14. 渗透测试报告模板_网站安全测试报告模板该如何写
  15. matlab里面的取整函数
  16. SpringBoot框架DataSource多数据源配置
  17. iPhone6 iPhone6 Plus 屏幕分辨率、尺寸的问题
  18. kmspico_setup.exe运行提示系统资源不足,无法完成请求的服务
  19. 什么是Android手机
  20. Solidworks模板及设计库方便设计者调用

热门文章

  1. 知识图谱在信息检索中的应用_封面数据 | 知识图谱的入门与应用
  2. xps 13 ubuntu记录
  3. c++制作简易中国象棋
  4. c语言菜单怎么清空,你好,请教个C语言菜单实现清屏功能。就是用switch里面输入一个数子,就实现部分清屏或者全清屏...
  5. java截图工具的实现
  6. 关于国密HTTPS 的那些事(三)
  7. IC基础知识:时钟无毛刺切换
  8. python---简单的图形编程
  9. Unity异步加载关卡
  10. php ul前面的点,html里面ul那个点怎么消