QtQuick:画一条线 - 将 QQuickItem 与 Canvas 或 QQuickPaintedItem 混合

QtQuick: Drawing a Line - Mixing QQuickItem with Canvas or QQuickPaintedItem

我创建了一个可以显示线图的 QQuickItem。这是使用 QSGNodes 完成的,因此应该通过 OpenGL 进行硬件加速(因为我需要绘制很多点)。现在我想在这个图中添加一个轴,为此我需要为轴绘制一些线,刻度线(并且可能包括轴上箭头的 svg)并有一些文本标签。

如果我将此轴实现为 QQuickPaintedItem 或使用 Canvas,是否会影响性能?我不担心绘制轴的性能,但如果在同一位置有 QQuickPaintedItem,我的线图 QQuickItem 是否仍会使用 OpenGL?

请注意,SVG 文件被光栅化并绘制为光栅位图,它们不是使用几何图形绘制的,因此除了 space 图像存储在磁盘上之外,拥有 SVG 并不能真正为您节省太多,因为就 GPU 渲染而言,它只是一个位图。如果您想使用几何图形绘制它,请再次选择 QQuickItemQSGNodes 组合。

QQuickPaintedItemCanvas- 两者的工作方式相同,只有 Canvas 的绘图是从 JS 完成的,所以会慢一点。但是,这可能不是问题,因为您通常不需要那么多地重绘图表轴。

当然,每个元素都会在各自的后端渲染,不用担心。