c++ - 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 文档的链接。
解决方案
经过更多研究,我似乎错过了文档中的一个重要细节:
加速系列将忽略笔样式和标记形状。仅支持实线和普通散点。散点可能是圆形或矩形,具体取决于底层图形硬件和驱动程序。
我仍然想知道是否有办法实现圆角以及不加速线的方法。
推荐阅读
- git - 在 git init 之后,Git 远程不显示 master 或 origin
- jquery - elm.children 不是函数(在 $('.input-group').each 内
- c++ - c++ srand(time(0)) 在猜谜游戏中不起作用
- ruby-on-rails - SecureRandom.hex() 与 SecureRandom.random_bytes() 在 Rails 中使用 attr_encrypted 生成密钥
- python - 将 VGGFace ResNet 导出到 TensorFlow Serving:ValueError:应定义“密集”输入的最后一个维度。找到`无`
- javascript - 在 Typescript 的类型注释中使用“is”关键字的目的是什么
- python - 在 Pandas 列中输入列表值
- github - 如何定义 GitHub 操作?
- javascript - HTML span 标签自动滚动
- python - 将字符串与大句子进行比较并获得相似度百分比