1.QImage 填充透明路径
问题如下:
QImage如何填充一个透明的path
解决1
rect = path.boundingrect();
遍历 rect => (x, y), if(path.contains(x, y)) img.setPixel(x, y, transparent);
这样绘制的画笔会有严重的粗细反差,效果很差
解决2
优化解决1,将path转成对于的list<point>,然后再次setFixel即可
QList<QPoint> Form::path2Points(const QPainterPath &path)
{QList<QPoint> curPoints;QRect r = path.boundingRect().toRect();QImage img(r.x() + r.width(), r.y() + r.height(), QImage::Format_ARGB32);img.fill(qRgba(255, 255, 255, 255));QPainter p(&img);p.fillPath(path, QColor(0, 0, 0, 255));for(int x = r.x(); x < r.x() + r.width(); x ++) {for(int y = r.y(); y < r.y() + r.height(); y ++) {if(img.pixel(x, y) == qRgba(0, 0, 0, 255)&& img.rect().contains(x, y)) {curPoints << QPoint(x, y);}}}return curPoints;
}