2013-11-20 60 views
0

嗨,大家好,我有一個弧形像這樣一個旋轉電弧在Java

g2d.draw(new Arc2D.Double(200, 200,100,200,90.123, 135.3456,Arc2D.OPEN)); 

現在我需要旋轉這個弧使用AffineTransform類的java.awt.geom包那麼壞的必須把

public void AffineTransform(AffineTransform Tx){ 
AffineTransform rtt = new AffineTransform(); 
     rtt.rotate(Math.toRadians(62)); 

} 

,所以我創建了一個對象,我告訴這個對象由我希望他們能在弧度,所以我變換62度旋轉。接下來我應該做些什麼來使我的電弧與這些弧旋轉。我真的是一個新手,所以廣泛的解釋將是首選....

回答

1

好相反,Graphics2D類本身具有旋轉功能,(簡單和更短的):

  1. rotate(double theta):連結當前Graphics2D用旋轉變換進行變換。後續渲染按照指定的弧度相對於前一個原點旋轉。

  2. rotate(double theta, double x, double y):將當前Graphics2D變換與已轉換的旋轉變換連接起來。此操作等效於以下調用序列:

    translate(x, y); 
    rotate(theta); 
    translate(-x, -y); 
    

然而,旋轉後,我想恢復圖形狀態:嘗試創建一個圖形對象和繪圖完成後處置它關閉:

Graphics2D g2d = (Graphics2D)g.create(); 
    g2d.rotate(theta); 
    g2d.draw(new Arc2D.Double(200, 200,100,200,90.123, 135.3456,Arc2D.OPEN)); 
    g2d.dispose(); 

或者,如果不喜歡的創建和配置:

g2d.rotate(theta); 
    g2d.draw(new Arc2D.Double(200, 200,100,200,90.123, 135.3456,Arc2D.OPEN)); 
    g2d.rotate(-theta); 
+0

謝謝你的AffineTransform洙多的原因事情很困難。好的2個問題爲什麼我必須在每次繪圖結束時處理。其次,如果我必須繪製5個弧線或10個弧線,並且我需要它們分別旋轉,那我該如何定義哪個弧線以該角度旋轉而另一個是由另一個旋轉。 – Renobatio

+0

這不是你每次都需要處理圖形對象。但是在你調用'roate(theta)'函數後,任何後續的圖形對象繪製都將被旋轉。所以,當你不想讓你的繪畫再旋轉時就處置掉。這只是一個更安全的方法 – Sage