簡體   English   中英

如何在Java Swing中的兩點之間繪制橢圓或橢球

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM