当前位置: 代码迷 >> 综合 >> 1.QImage 填充透明路径
  详细解决方案

1.QImage 填充透明路径

热度:34   发布时间:2024-01-30 07:41:50.0

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;
}