• 4972阅读
  • 3回复

[提问]怎样抠出图片中的多边形区域并生成一个新的图片 [复制链接]

上一主题 下一主题
离线houtinghua
 

只看楼主 倒序阅读 楼主  发表于: 2013-03-04
我想做的事情是这样的,用户先选取一个封闭区域,有可能是三角形矩形多边形等,还有可能这个多边形的线段出现交叉
然后我把用户选取的这些点连接成一个封闭区域,我用的是QPainterPath
在然后把这个封闭区域从图片上扣出来,放到一个空的qimage上,代码如下,但是不成功,不知道哪里的问题



QBrush qb("c:/tmp.png");
    QPainterPath path;
    path.moveTo(10,100);
    path.lineTo(200,50);
    path.lineTo(220,80);
    path.lineTo(200,110);
    path.lineTo(200,90);
    path.closeSubpath();
    QImage img(300,300,QImage::Format_ARGB32);
    QPainter g(&img);
    g.setBrush(qb);
    g.drawPath(path);


    QPainter p(this);
    p.drawImage(0,0,img);



离线kimtaikee

只看该作者 1楼 发表于: 2013-03-04
  1. DrawImage::DrawImage(QWidget *parent) :
  2.     QWidget(parent)
  3. {
  4.     QBrush qb("c:/tmp.png");
  5.     QPainterPath path;
  6.     path.moveTo(10,100);
  7.     path.lineTo(200,50);
  8.     path.lineTo(220,80);
  9.     path.lineTo(200,110);
  10.     path.lineTo(200,90);
  11.     path.closeSubpath();
  12.     QImage img(300,300,QImage::Format_ARGB32);
  13.     QPainter g(&img);
  14.     g.setBrush(qb);
  15.     g.drawPath(path);
  16.     QPixmap pixmap;
  17.     pixmap.convertFromImage(img);
  18.     QLabel* label = new QLabel(this);
  19.     label->setPixmap(pixmap);
  20.     label->show();
  21. }

离线houtinghua

只看该作者 2楼 发表于: 2013-03-04
图片没出来啊,我想要这个形状的图片啊
离线houtinghua

只看该作者 3楼 发表于: 2013-03-04
ok 成功了


QImage imgback("c:/tmp.png");
    QBrush qb(imgback);
    QPainterPath path;
    path.moveTo(10,100);
    path.lineTo(200,50);
    path.lineTo(220,80);
    path.lineTo(200,110);
    path.lineTo(200,90);
    path.closeSubpath();
    QImage img(300,300,QImage::Format_ARGB32);
    QPainter g(&img);
    g.setBrush(qb);
    g.drawPath(path);

    QPainter p(this);
    p.drawImage(0,0,img);
快速回复
限100 字节
 
上一个 下一个