Qt 如何画线-不是在画布上,只是对象?
我正在将我的游戏移植到QML,有一个很困难的问题。请看这张图片: 三角形是精灵,直线是力向量。我可以用QML显示精灵,但我不懂如何绘制矢量。它的长度可以超过精灵的大小 我想我可以使用高度为1px的矩形,但我不知道如何旋转它Qt 如何画线-不是在画布上,只是对象?,qt,qml,qtquick2,Qt,Qml,Qtquick2,我正在将我的游戏移植到QML,有一个很困难的问题。请看这张图片: 三角形是精灵,直线是力向量。我可以用QML显示精灵,但我不懂如何绘制矢量。它的长度可以超过精灵的大小 我想我可以使用高度为1px的矩形,但我不知道如何旋转它 每个帧上的力都可能发生变化,因此绘图性能必须良好。如果不想使用画布,有几个选项: 实施QQuickPaintedItem-它使用QPainterAPI对QML项目进行绘图。最简单的解决方案,但如果你画了很多图,效率就不高了 实现自定义QQuickItem-它更复杂,您必
每个帧上的力都可能发生变化,因此绘图性能必须良好。如果不想使用
画布,有几个选项:
- 实施
QQuickPaintedItem
-它使用QPainter
API对QML项目进行绘图。最简单的解决方案,但如果你画了很多图,效率就不高了
- 实现自定义
QQuickItem
-它更复杂,您必须实现其他内容,但速度更快,因为它将使用scenegraph API,因此渲染将得到优化
- 使用
Qt3D
模块,虽然它用于三维图形,但也可以进行二维绘图
最后,很明显,你可以通过创建一个非常窄和宽的矩形来画一条线,并给它一些旋转。但这是一个非常笨拙的解决方案。我建议您研究第二个选项,并检查一些示例,使用自定义几何体和着色器实现QQuickItem
更新:
自Qt5.10以来,还有qmlShape
元素,它提供了定义向量形状的声明性方法,这是在qml中使用参数化图形的最简单方法。缺点是性能不是一流的,但如果你不使用过多的元素,它仍然是完全可用的。在QML中,不知道它在性能方面是否足够好。看看这个。@BaCaRoZzo将一个链接作为answer@Robotex你认为这个答案比提供和接受的答案更合适吗?如果是这样的话,我认为我们应该进行最后的投票。