2014-02-27 180 views
0

我有兩個點座標。一個起點和一個終點。如何在java swing中的兩點之間繪製橢圓或橢圓體

我想在Java Swing應用程序中的這兩點之間繪製一個橢圓。

我該如何使用圖形2d或3d來做到這一點。

final Point p1 = new Point(17, 58); 
    final Point p2 = new Point(324, 312); 
final Ellipse2D.Double el = new Ellipse2D.Double(p1.x > p2.x ? p2.x : p1.x, 
          p1.y > p2.y ? p2.y : p1.y, 
          60, 
          Math.abs(p1.y - p2.y)); 

身高是60這裏t可以變化。

這裏的x和y座標是起點座標

我如何使用一個變量作爲固定終點座標,繪製橢圓我?

請查看下面enter image description here

回答

3

圖像對於你需要使用的JComponentpaintComponent()方法,例如JPanel定製的畫作。 Read more about that.

看來你正在尋找的東西像未來:

import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Graphics2D; 
import java.awt.Point; 
import java.awt.geom.Ellipse2D; 
import java.beans.Transient; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class Test extends JFrame{ 

    public Test(){ 
     init(); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     pack(); 
     setVisible(true); 
    } 

    private void init() { 
     final Point p1 = new Point(210, 280); 
     final Point p2 = new Point(160, 190); 
     final Ellipse2D.Double el = new Ellipse2D.Double(p1.x > p2.x ? p2.x : p1.x, 
          p1.y > p2.y ? p2.y : p1.y, 
          Math.abs(p1.x - p2.x), 
          Math.abs(p1.y - p2.y)); 

     JPanel p = new JPanel(){ 
      protected void paintComponent(java.awt.Graphics g) { 
       super.paintComponent(g); 
       Graphics2D g2d = (Graphics2D) g; 
       g2d.draw(el); 
       g2d.setColor(Color.RED); 
       g2d.drawString("P1", p1.x, p1.y); 
       g2d.drawString("P2", p2.x, p2.y); 
      }; 

      @Override 
      @Transient 
      public Dimension getPreferredSize() { 
       return new Dimension(p1.x+p2.x+10,p1.y+p2.y+10); 
      } 
     }; 

     add(p); 
    } 

    public static void main(String[] args) { 
     new Test(); 
    } 
} 

enter image description here

+0

Hiiii @ alex2410我已經按照您仍然有問題,我已經編輯我的問題也共享代碼編輯我的代碼。 –

+0

在這種情況下,您需要根據矩形的對角線計算寬度和高度。然後在g2d.draw(el);'之前用'g2d.rotate()'旋轉圖形的幫助。 – alex2410