我想将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
图像时,分辨率非常差。
我能以某种方式说一下,应该以固定分辨率(例如150dpi)或固定大小((500x700像素))呈现QChartView吗?
答案 0 :(得分:1)
您可以使用QPaintDevice::devicePixelRatioF()
并使用QPixmap
代替图像来缩放图像。
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);
将图像缩放到适当的分辨率后,您可以将其转换为QImage
或直接保存:
QFile file("image.png");
file.open(QIODevice::WriteOnly);
uffer.save(&file, "PNG");