2011-09-23 21 views
2

我想在Graphics2D的座標系上畫線。但是,我發現負面區域的部分不能顯示。無論如何,我可以讓陰性區域的線條被看到嗎?Java2D的負向位置無法顯示,將原點移動到左下角

另外,無論如何,我可以直接轉換Y軸從下向上?

Graphics2D g2 = (Graphics2D) g; 
g2.scale(1, -1); 
g2.translate(0, -HEIGHT); 

無法正常工作。對象消失。

謝謝!

回答

2

啊,你正在使用HEIGHT屬性。你應該使用getHeight()


下面的代碼會產生這個截圖(g2.drawLine(0, 0, 100, 100)):

screenshot

代碼:

public static void main(String[] args) throws Exception { 

    JFrame frame = new JFrame("Test"); 

    frame.add(new JComponent() { 
     @Override 
     protected void paintComponent(Graphics g) { 
      super.paintComponent(g); 

      Graphics2D g2 = (Graphics2D) g.create(); 
      { 
       g2.translate(0, getHeight() - 1); 
       g2.scale(1, -1); 

       g2.drawLine(0, 0, 100, 100); 
      } 
      g2.dispose(); 
     } 
    }); 

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(400, 300); 
    frame.setVisible(true); 
} 
+0

它的工作原理,謝謝! 我還有一些問題。希望您能夠幫助我。 什麼是「super.paintComponent(g);」對於?該程序仍然可以運行沒有這條線。 「getHeight()」意味着什麼的高度?我以前沒有設置它。 – Yao

1

據我瞭解的Java2D你不能使用負座標。您始終在Java2D中的所謂「用戶空間」中運行。在「設備空間」中翻譯您的位置的座標可能是負面的,但這在Java中是不可見的。另見Java2D Tutorial - CoordinatesGraphics2D API

您可以通過繼承Graphics2D並自己做這些翻譯來實現您想要的效果。

相關問題