QGraphicsScene和Item生成图片的方法

结果展示:
Secne图片生成单个Item图片
code很简单:

    QRectF size = pItem->boundingRect();
    QPixmap pix(size.width(),size.height());
    QPainter painter;
    pix.fill(Qt::transparent);
    painter.begin(&pix);
    QStyleOptionGraphicsItem stye;
    pItem->paint(&painter,&stye);
    painter.end();
    pix.save("C:/Item.png");
    // print text
    QPixmap textpix(itemtext->boundingRect().width(),itemtext->boundingRect().height());
    textpix.fill(Qt::white);
    painter.begin(&textpix);
    //QStyleOptionGraphicsItem stye;
    itemtext->paint(&painter,&stye,0);
    painter.end();
    textpix.save("C:/textitem.png");

    QRectF size = pItem->boundingRect();
    size.setTopLeft(pItem->scenePos());
    size.setWidth(pItem->boundingRect().width());
    size.setHeight(pItem->boundingRect().height());
    QRectF target(scene->sceneRect());
    //QPixmap pixmap(size.width(),size.height());
    QPixmap pixmap(target.width(),target.height());
    QPainter painter(&pixmap);
    //QRectF target(0,0,62,62);
    //scene->render(&painter, target, size);
    scene->render(&painter/*, target, size*/);

其实也可以通过Scene的render中target和source生成想要的区域。
另外,通过painter生成Item时,如果有旋转角度,则Item图片不包含。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值