QPainter::drawLine 在大图像宽度方面存在问题

问题描述 投票:0回答:1

最近,我的应用程序遇到了一个问题(所以我提供了一个问题的迷你示例),这是我在创建大型图像时遇到的问题,当我查看输出图像时,它没有完全绘制!我不知道为什么,所以我创建了一个迷你示例。

#include <QGuiApplication>
#include <QPainter>
#include <QPixmap>

static QPixmap imageTest(int width, int height, QColor const &color) {
  static constexpr auto VERTICAL_PADDING = 2;
  QPixmap pixmap(width, height);
  pixmap.fill(Qt::transparent);

  QPainter painter(&pixmap);
  painter.setRenderHint(QPainter::Antialiasing);

  QPen pen(color);
  double const widthF = 1.0;
  pen.setWidthF(widthF);
  painter.setPen(pen);
  for (int i = 0; i < width; ++i) {
    QPointF p1(i, 94.9445); // mini example assume fixed height
    QPointF p2(i, 167.055); // mini example consider fixed height
    painter.drawLine(p1, p2);
  }
  painter.end();
  return pixmap;
}

int main(int argc, char *argv[]) {
  QGuiApplication app(argc, argv);
  auto image = imageTest(211'459, 262, Qt::GlobalColor::green);
  image.save("testFile.png", "PNG");
  app.quit();
  return 0;
}

图像的结果,是这样的:

enter image description here

我还使用其他方法进行了测试,例如绘制线和填充矩形,但这对我没有帮助。有什么问题吗?

c++ qt5 qpainter qpixmap
1个回答
0
投票

您可以使用的唯一方法: 将图像分成更小的部分并制作多个图像...... 我刚刚发现它很有用并使用它。 感谢您的评论。

© www.soinside.com 2019 - 2024. All rights reserved.