2015-03-19 271 views
0

我在QML畫布上繪製了一個橢圓,我希望能夠旋轉它。除了context.rotate(angle)之外,還有什麼辦法可以做到嗎?據我所知,這將旋轉整個畫布。有沒有方法只旋轉子路徑?QML畫布旋轉橢圓

我有點驚訝,橢圓是由寬度和高度的中心定義的,而不是兩個焦點。這會讓事情變得更容易。

+1

難道你不能保存上下文的狀態,應用橢圓變換,繪製橢圓,然後恢復狀態? 像這裏描述的那樣https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Transformations#A_rotate_example – GrecKo 2015-03-19 10:36:47

+0

我不這麼認爲。 「當前路徑不是繪圖狀態的一部分。」 - http://doc.qt.io/qt-5/qml-qtquick-context2d.html#save-method。 – EvenLisle 2015-03-19 10:39:34

+0

我看不出這是一個問題。你有代碼示例嗎? – GrecKo 2015-03-19 10:44:50

回答

1

GrecKo的評論是絕對正確的,只是添加了代碼以防其他人需要摘要。移動座標系(平移)將原點放在橢圓的中心,然後旋轉並將其移回原始位置。

var context = canvas.getContext("2d") 
context.save() 
context.translate(ellipse.center.x, ellipse.center.y) 
context.rotate((Math.PI/180) * degrees) 
context.translate(-ellipse.center.x, -ellipse.center.y) 
context.restore() 
canvas.requestPaint()