如何绘制线 - 不是在画布上,只是对象?

时间:2015-09-04 11:45:18

标签: qt qml qtquick2

我将我的游戏移植到QML并且有一个难度。看看这张图片:

Sprite with vectors

三角形是一个精灵,线条是力矢量。我可以在QML中显示精灵,但我无法理解如何绘制矢量。它的长度可以超过精灵大小。

我想我可以{1}使用Rectangle 1px,但我不知道如何旋转它。

力量可以在每一帧都改变,因此绘画表现必须良好。

1 个答案:

答案 0 :(得分:6)

如果您不想使用Canvas,可以选择以下几种方法:

  • 实施QQuickPaintedItem - 它使用QPainter API来绘制QML项目。最简单的解决方案,但如果您进行大量绘图则效率不高。

  • 实现自定义QQuickItem - 它更复杂,您将不得不实现其他内容,但它会更快,因为它将使用scenegraph API,因此您的渲染将得到优化

  • 使用Qt3D模块,虽然它适用于3D图形,但它也可以进行2D绘图。

最后,显然你可以通过创建一个非常狭窄和宽Rectangle来绘制一条线并给它一些旋转。但这是一个非常笨拙的解决方案。我建议您研究第二个选项,并检查一些示例,使用自定义几何和着色器实现QQuickItemHere is one similar example