[英]How to draw an ellipse or ellipsoid between two points in java swing
我有两个点坐标。 一个起点和一个终点。
我想在Java Swing应用程序的这两点之间画一个椭圆。
我如何使用Graphics 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坐标是起点坐标
如何使用一个变量作为固定终点坐标来绘制椭圆?
请看下面的图片
对于自定义绘画,您需要使用JComponent
paintComponent()
方法,例如JPanel
。 进一步了解。
似乎您正在寻找类似next的东西:
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();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.