首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以高分辨率渲染QChartView

以高分辨率渲染QChartView
EN

Stack Overflow用户
提问于 2019-04-03 22:16:09
回答 1查看 939关注 0票数 0

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

代码语言:javascript
复制
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像素)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-03 22:27:26

您可以使用QPaintDevice::devicePixelRatioF()并使用QPixmap而不是图像来缩放图像。

代码语言:javascript
复制
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或直接保存:

代码语言:javascript
复制
QFile file("image.png");
file.open(QIODevice::WriteOnly);
uffer.save(&file, "PNG");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55497326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档