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

Qt 如何画线-不是在画布上,只是对象?,qt,qml,qtquick2,Qt,Qml,Qtquick2,我正在将我的游戏移植到QML,有一个很困难的问题。请看这张图片: 三角形是精灵,直线是力向量。我可以用QML显示精灵,但我不懂如何绘制矢量。它的长度可以超过精灵的大小 我想我可以使用高度为1px的矩形,但我不知道如何旋转它 每个帧上的力都可能发生变化,因此绘图性能必须良好。如果不想使用画布,有几个选项: 实施QQuickPaintedItem-它使用QPainterAPI对QML项目进行绘图。最简单的解决方案,但如果你画了很多图,效率就不高了 实现自定义QQuickItem-它更复杂,您必

我正在将我的游戏移植到QML,有一个很困难的问题。请看这张图片:

三角形是精灵,直线是力向量。我可以用QML显示精灵,但我不懂如何绘制矢量。它的长度可以超过精灵的大小

我想我可以使用高度为1px的矩形,但我不知道如何旋转它


每个帧上的力都可能发生变化,因此绘图性能必须良好。

如果不想使用
画布,有几个选项:

  • 实施
    QQuickPaintedItem
    -它使用
    QPainter
    API对QML项目进行绘图。最简单的解决方案,但如果你画了很多图,效率就不高了

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

  • 使用
    Qt3D
    模块,虽然它用于三维图形,但也可以进行二维绘图

最后,很明显,你可以通过创建一个非常窄和宽的
矩形来画一条线,并给它一些旋转。但这是一个非常笨拙的解决方案。我建议您研究第二个选项,并检查一些示例,使用自定义几何体和着色器实现
QQuickItem

更新:
自Qt5.10以来,还有qml
Shape
元素,它提供了定义向量形状的声明性方法,这是在qml中使用参数化图形的最简单方法。缺点是性能不是一流的,但如果你不使用过多的元素,它仍然是完全可用的。

在QML中,不知道它在性能方面是否足够好。看看这个。@BaCaRoZzo将一个链接作为answer@Robotex你认为这个答案比提供和接受的答案更合适吗?如果是这样的话,我认为我们应该进行最后的投票。