2013-10-18 56 views
0

我希望能夠將畫筆和矩形繪製到畫布上,然後沿着它們的中心旋轉它們。所以我正在做一個測試用例,其中有一個不能旋轉的藍色正方形和一個應該旋轉的紅色正方形。 THey是相同的大小,並且應該共享相同的中心「樞軸點」。我有以下代碼:旋轉後如何翻譯畫布以在矩形的另一箇中心保持矩形?

Paint p = new Paint(); 
    p.setColor(Color.CYAN); 
    p.setAlpha(200); 
    canvas.drawRect(new Rect(100,100,300,300), p); 
    canvas.save(); 
    canvas.rotate(45,250,250);// 250,250 is the center of the blue rectangle 
    p.setColor(Color.RED); 
    p.setAlpha(100); 
    canvas.drawRect(new Rect(100,100,300,300), p); 
    canvas.restore(); 

它給了我接近我想要的結果,但我錯過了一些數學,因爲它看起來像在畫布上也需要應用一個翻譯。下面是結果: result

我所缺少的,這樣我可以沿着藍色的中心旋轉的紅色長方形,他們最終共享相同的中心點是這樣的: desired

+0

貌似矩形的中心是'(200,200)'!你是怎麼想到250的? –

回答

1

的藍色長方形的中心是錯誤的。

center(x,y) = (left + (width/2), top + (height/2))

注:width = 200, height = 200所以,center(x,y) = (200,200)

切換到這一點,它的工作原理:

canvas.rotate(45,200,200);// 200,200 is the center of the blue rectangle 
+0

我完全忘了300,300是正確的和底部的,而不是寬度和高度。謝謝你的回答!我很高興這是一個簡單的錯誤。 – Zach