0

我想将 QChartView 保存为 .png 图像。因此我使用以下代码:

QChartView *chartView = qobject_cast<QChartView*>(/* get chart view */);

QImage image;
QPainter painter(&image);
painter.setRenderHint(QPainter::Antialiasing);
chartView->render(&painter);
image.save("test.png");

当我看test.png图像时,分辨率很差。

我可以说,QChartView 应该以固定分辨率(如 150dpi)或固定大小(如(500x700 像素))呈现吗?

4

1 回答 1

1

您可以通过使用QPaintDevice::devicePixelRatioF()和使用 aQPixmap而不是图像来缩放图像。

const auto dpr = chartView->devicePixelRatioF();
QPixmap buffer(chartView->width() * dpr, chartView->height() * dpr);
buffer.setDevicePixelRatio(dpr);
buffer.fill(Qt::transparent);

QPainter *paint = new QPainter(&buffer);
paint->setPen(*(new QColor(255,34,255,255)));
chartView->render(paint);

将图像缩放到适当的分辨率后,您可以将其转换为 aQImage或直接保存:

QFile file("image.png");
file.open(QIODevice::WriteOnly);
uffer.save(&file, "PNG");
于 2019-04-03T14:27:25.563 回答