找回密码
 立即注册
收起左侧

关于保存QPainter所画图形问题

4
回复
7527
查看
[复制链接]
累计签到:12 天
连续签到:1 天
来源: 2017-6-1 21:39:21 显示全部楼层 |阅读模式
5Qter豆
大家好,遇到一个问题实在不懂怎么解决故来提问
背景:我在widget里面用Qpainter画了两个图安,想让它们叠加一起变成一张图保存,但是我是直接画在窗口上的,就不知道该怎么做了
我的需求:通过点击一个保存按钮将画的图保存起来
我的代码
//一些参数设置
    int beginx,beginy,widt,heig;
    beginx = beginPoint.x();
    beginy = beginPoint.y();
    widt = endPoint.x() - beginx;
    heig = endPoint.y() - beginy;
    QImage *a = new QImage(globe::myImage);//这是放在背景的图片
//开始画图,实现的是在一张图上画一个矩形,矩形大小是通过鼠标事件来定的
    QPainter painter;
    painter.begin(this);
    painter.setCompositionMode(QPainter::CompositionMode_SourceAtop);
    painter.drawImage(110, 10, *a);

    QPen pen;
    pen.setColor(Qt::red);
    pen.setWidth(4);
    painter.setPen(pen);
    painter.drawRect(beginx,beginy,widt,heig);
    painter.end();



求问我该怎么把这图片给保存下拉感谢~~~


最佳答案

查看完整内容

QPainter painter; painter.begin(image); .... image->save(....);
回复

使用道具 举报

累计签到:410 天
连续签到:1 天
2017-6-1 21:39:22 显示全部楼层
QPainter painter;
    painter.begin(image);

....


image->save(....);
回复

使用道具 举报

累计签到:742 天
连续签到:1 天
2017-6-2 08:48:04 显示全部楼层
a408815041 发表于 2017-6-1 22:07
QPainter painter;
    painter.begin(image);

楼上正解~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
回复

使用道具 举报

累计签到:12 天
连续签到:1 天
2017-6-2 09:51:59 显示全部楼层
a408815041 发表于 2017-6-1 21:39
QPainter painter;
    painter.begin(image);

谢谢你 解决了~~~~~~~~~~~~~
回复

使用道具 举报

累计签到:12 天
连续签到:1 天
2017-6-2 10:01:03 显示全部楼层
说下我的解决:
  //我设的是全局变量
  QPixmap  b;
QPixmap c;
//把b设为背景图,然后以这个为画布,画矩形的话,就能产生叠加效果,代码手打可能有误。
   b = QPixmap::fromImage(a) ;
   QPainter painter;
   painter.begin(&b);
   //如果想要在一个图片上画一个矩形或者什么图案的话,下面这句话是可以不要的
  // painter.setCompositionMode(QPainter::CompositionMode_SourceAtop);
   ----
painter.end()'
c = b;
//还有如果是要点击按钮保存上面画的图片的话,我发现在paint事件里能正常保存,因为我是通过按钮,但是在按钮里保存这个全局变量的时候,并没有叠加上我画的矩形,于是我就另外设了一个全局变量c在一画完就将b赋值c,然后在按钮中,就是我所想要的,其实这还是蛮简单的 只是自己一直没弄明白。
c.save("a.png");
  
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了