c++ - 以高分辨率渲染 QChartView

标签 c++ qt rendering qtcharts

我想将 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 像素))呈现吗?

最佳答案

您可以使用 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");

关于c++ - 以高分辨率渲染 QChartView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55497326/

相关文章:

c++ - Gtk+ GtkComboBox 插入 GtkWidget 而不是字符串

qt - Qt TCP服务器在单独的线程中运行readyRead()

c - 确定多边形是否在视锥体内

html - IE 8.0 和 Chrome 表单格式问题

html - 了解浏览器呈现 "quirk"

c++ - 为什么 std::string 引用不能带 char*?

c++ - 调试函数包装器

c++ - 为什么在应用服务器项目中使用不止一种语言?

c++ - Qt:Qt 新手问题

c++ - 如何确定给定的属性是否不是从基类继承的?