我試圖環顧四周,但無法理解如何在java中繪製圖形。讓我舉個例子。Java - 如何繪製圖形
比方說,我想創建一個自定義方法來填充一個三角形,它需要三個點作爲參數。如果我無法創建Graphics對象,如何使用metod fillPolygon(int [] xPoints,int [] yPoints,int nPoints)?
我試圖環顧四周,但無法理解如何在java中繪製圖形。讓我舉個例子。Java - 如何繪製圖形
比方說,我想創建一個自定義方法來填充一個三角形,它需要三個點作爲參數。如果我無法創建Graphics對象,如何使用metod fillPolygon(int [] xPoints,int [] yPoints,int nPoints)?
你需要一個表面來繪製。通常這可以通過創建您自己的組件(通過擴展,例如在搖擺中的JPanel
),然後覆蓋那裏的各種繪圖更新方法來完成。主要實現的是paintComponent,它獲取一個Graphics對象作爲參數傳入。
您通常也可以將您的Graphics
對象轉換爲Graphics2D,這會爲您提供更豐富的繪製原語集。
+1,覆蓋'paintComponent',而不是'paint'。 :D – mre
你應該明白的第一件事(也許你已經知道了)是Graphics
是你寫的地方到,而不是你寫的地方。大部分時間都是電腦屏幕,比如當你使用Swing時。
您還可以通過從BufferedImage.getGraphics獲得的Graphics
書面直接繪製到一張空白圖:
Image myImage = new BufferedImage(...);
Graphics graphImage = myImage.getGraphics();
graphImage.setColor(Color.BLUE);
graphImage.fillPolygon(...); // set some blue pixels inside the BufferedImage
你可以那麼圖像轉換成任何圖像格式。
現在愚蠢的例子,你不應該這樣做(見下文真正的Swing程序): 你可以在一個Swing組件繪製圖像
public class MyJPanel extends Panel {
@Override
public void paintComponent(Graphics g) { // g is your screen
...
g.drawImage(myImage,...); // draw your image to the screen
...
}
}
的標準Swing程序是直接寫屏幕:
public class MyJPanel extends Panel {
@Override
public void paintComponent(Graphics g) { // g is your screen
...
g.fillPolygon(...); // directly writes your pixels to the screen buffer
...
}
}
(註釋爲nitpickers:這是不完全正確,你直接寫屏幕緩衝區,因爲Swing是雙緩衝)
下面是一個相關的[示例](https://sites.google.com/site/drjohnbmatthews/point-in-polygon)。 – trashgod
參見:[2D摹raphics](http://download.oracle.com/javase/tutorial/2d/index.html)教程。 – mre