2011-04-18 35 views
1

Java API中是否有任何內置方法可以調整多邊形的大小?如何在Java中調整AWT多邊形

編寫我自己的方法是否是一項相當簡單的任務,或者是否有其他方法?

回答

2

不,沒有內置任何東西,當您繪製多邊形時,可以繪製帶有應用的變換矩陣的多邊形,這可以爲您縮放多邊形。 (或旋轉,歪斜等等)。

參見

Graphics2D.setTransform(transform);

假設您正在繪製JPanel中的多邊形,並且已經重寫了JPanel的paintComponent方法。鑄造Graphics對象Graphics2D對象,並使用變換來擴展它酌情:

public void paintComponent(Graphic g) { 

    Graphics2D g2d = (Graphics2D) g; 
    AffineTransform saveTransform = g2d.getTransform(); 

    try { 
     AffineTransform scaleMatrix = new AffineTransform(); 
     scaleMatrix.scale(1.5, 1.5); 
     //or whatever you want 

     g2d.setTransform(scaleMatrix); 
     g2d.drawPolygon(myPolygon); 
    } finally { 
     g2d.setTransform(saveTransform); 
    } 
} 

機會是你可以設置轉換矩陣別處(一次),而不是在paintComponent方法裏面每一次,但我沒有這裏展示如何去做。

另外請注意,這將移動多邊形,你可能會想這適用於改造:

  • 添加翻譯成多邊形移動到原點
  • 增加規模
  • 加將多邊形移回到原始位置的平移

以這種方式,對象不會移動它只是縮放。

+0

我認爲這可能是更適合我的問題,因爲我希望擴展的形狀,以適應不同屏幕尺寸爲簡單的2D遊戲。這是個好主意嗎?你能否添加一些關於setTransform方法如何工作的更多信息? – Matt 2011-04-18 02:19:04

+0

@Matt新增示例 – MeBigFatGuy 2011-04-18 02:33:23