我想在Graphics2D的座標系上畫線。但是,我發現負面區域的部分不能顯示。無論如何,我可以讓陰性區域的線條被看到嗎?Java2D的負向位置無法顯示,將原點移動到左下角
另外,無論如何,我可以直接轉換Y軸從下向上?
Graphics2D g2 = (Graphics2D) g;
g2.scale(1, -1);
g2.translate(0, -HEIGHT);
無法正常工作。對象消失。
謝謝!
我想在Graphics2D的座標系上畫線。但是,我發現負面區域的部分不能顯示。無論如何,我可以讓陰性區域的線條被看到嗎?Java2D的負向位置無法顯示,將原點移動到左下角
另外,無論如何,我可以直接轉換Y軸從下向上?
Graphics2D g2 = (Graphics2D) g;
g2.scale(1, -1);
g2.translate(0, -HEIGHT);
無法正常工作。對象消失。
謝謝!
啊,你正在使用HEIGHT
屬性。你應該使用getHeight()
。
下面的代碼會產生這個截圖(g2.drawLine(0, 0, 100, 100)
):
代碼:
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);
}
據我瞭解的Java2D你不能使用負座標。您始終在Java2D中的所謂「用戶空間」中運行。在「設備空間」中翻譯您的位置的座標可能是負面的,但這在Java中是不可見的。另見Java2D Tutorial - Coordinates和Graphics2D API。
您可以通過繼承Graphics2D並自己做這些翻譯來實現您想要的效果。
它的工作原理,謝謝! 我還有一些問題。希望您能夠幫助我。 什麼是「super.paintComponent(g);」對於?該程序仍然可以運行沒有這條線。 「getHeight()」意味着什麼的高度?我以前沒有設置它。 – Yao