2015-09-04 46 views
1

我將我的遊戲移植到QML,並且有一個困難。看看這張圖:如何畫線 - 不是在畫布上,只是對象?

Sprite with vectors

三角是一個精靈和線力矢量。我可以在QML中顯示精靈,但我無法理解如何繪製矢量。它可以有更多的精靈尺寸。

我想我可以使用Rectangleheight的1px,但我不知道如何旋轉它。

部隊可以在每個框架更改,因此繪圖性能必須良好。

+0

QML中的[docs on rotation](http://doc.qt.io/qt-5/qml-qtquick-rotation.html),不知道它的性能是否足夠好。 – gatto

+0

看看這個[很好的答案](http://stackoverflow.com/a/31650722/2538363)。 – BaCaRoZzo

回答

5

如果你不想使用Canvas,有幾個選項:

  • 實施QQuickPaintedItem - 它使用QPainter API做一個QML項目圖紙。最簡單的解決方案,但如果您進行大量繪圖則效率不高。

  • 實現自定義QQuickItem - 這是比較複雜的,你將不得不實施更多的東西,但它會更快,因爲它會使用場景圖API,讓你的渲染將得到優化

  • 使用Qt3D模塊,雖然它是3D圖形,但它也能夠2D繪圖。

最後,很明顯,你可以通過只創建一個非常狹窄,寬Rectangle畫一條線,並給它一些旋轉。但這是一個非常笨拙的解決方案。我建議你研究第二個選項,並檢查一些例子,用自定義幾何和着色器實現QQuickItemHere is one similar example