首页 > 解决方案 > QChart 和使用 QGradients 加速 OpenGL 渲染

问题描述

出了什么问题:

目前我的图表工作得很好,它有渐变和单色系列,例如:

带有渐变和单色系列的彩色图表

这很好用,但是当我使用fooSeries->setUseOpenGL(true)图表在 3 系列上启用 openGL 加速(以获得更高性能)时,会变成这样:

在此处输入图像描述

如您所见,渐变系列的颜色变为黑色,而单色系列变为白色。圆角帽和圆角连接似乎也消失了。我做了一些实验,看看可能是什么原因造成的。

尝试的修复/实验:


我给这个系列上色如下:

// fooGradient is a QLinearGradient described elsewhere as an example.
QBrush fooGradientPenBrush = QBrush(fooGradient);
fooPen = new QPen(fooGradientPenBrush, 5, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
//There are actually 2 QPens for two separate gradients in the program, but this is just for the example.

QBrush barPenBrush = QBrush(QRgb(0xFFFFFF));
barPen = new QPen(barPenBrush, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);

然后稍后将这些笔附加到各自系列的顶部:

fooSeries->setPen(*fooPen);
barSeries->setPen(*barPen);

然后将它们附加到图表上。而已。我会继续尝试并查看文档以查看是否遗漏了什么,可能只是 openGL 加速只接受纯色,但据说在文档中找不到我可以找到的地方。如果有人想看看这里,我会留下一个指向 setUseOpenGl 文档的链接。

标签: c++qtqtcharts

解决方案


经过更多研究,我似乎错过了文档中的一个重要细节:

加速系列将忽略笔样式和标记形状。仅支持实线和普通散点。散点可能是圆形或矩形,具体取决于底层图形硬件和驱动程序。

我仍然想知道是否有办法实现圆角以及不加速线的方法。


推荐阅读