你的問題是是使用java畫橢圓,可以使用awt和swing類庫實現(xiàn)
成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、大興網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計、商城網(wǎng)站開發(fā)、集團公司官網(wǎng)建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為大興等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
畫橢圓可以通過畫矩形及其內(nèi)切橢圓實現(xiàn),示例代碼如下
如果只需要橢圓,則無需g2.draw(rect);
class DrawPanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
// 畫矩形
double leftX = 100;
double topY = 100;
double width = 200;
double height = 150;
Rectangle2D rect = new Rectangle2D.Double(leftX, topY, width, height);
g2.draw(rect);
// 畫rect的內(nèi)切橢圓
Ellipse2D ellipse = new Ellipse2D.Double();
ellipse.setFrame(rect);
g2.draw(ellipse);
}
}
publicclassCircle{圓的半徑,privatedoublemRadius,publicCircle(doublemRadius){,this.mRadius=mRadius,}獲取圓的周長,publicdoublegetLength,{return2Math.PImRadius,},獲取圓的面積publicdoublegetArea{returnMath.PImRadiusmRadius。這樣即可在Java編譯橢圓周長的程序。
以下代碼,將輸出一個橢圓,再有問題,我可遠程助你。如下:
/**
*(300,100)(400,100)
*
*/
import?java.awt.*;
import?javax.swing.*;
import?java.awt.event.*;
public?class?Lipse?
{
public?static?void?main(String[]?args)
{
new?MainFrame();
}
}
class?MainFrame?extends?JFrame?implements?ActionListener
{
JPanel?pane=new?JPanel();
JTextField?T_a,T_b;
JButton?Draw,Show;
JLabel?L_a,L_b;
int?a,b;
MainFrame()
{
super("DrawLipse?Window");
Container?con=this.getContentPane();
con.setLayout(null);
pane.setBounds(20,20,850,550);
pane.setBackground(new?Color(100,156,200));
con.add(pane);
L_a=new?JLabel("請輸入長半徑:a");
L_a.setBounds(180,580,100,20);
con.add(L_a);
L_b=new?JLabel("請輸入短半徑:b");
L_b.setBounds(180,630,100,20);
con.add(L_b);
T_a=new?JTextField();
T_a.setBounds(300,580,50,20);
con.add(T_a);
T_b=new?JTextField();
T_b.setBounds(300,630,50,20);
con.add(T_b);
Draw=new?JButton("畫橢圓");
Draw.setBounds(550,580,90,30);
Draw.addActionListener(this);
con.add(Draw);
Show=new?JButton("顯示坐標");
Show.setBounds(550,620,90,30);
Show.addActionListener(this);
con.add(Show);
this.addWindowListener(new?CloseWindow());
this.setBounds(20,20,900,700);
this.setVisible(true);
this.setResizable(false);
}/*MainFrame()*/
public?void?actionPerformed(ActionEvent?e)
{
if(e.getSource()==Draw)
{
a=Integer.parseInt(T_a.getText().trim());
b=Integer.parseInt(T_b.getText().trim());
Line?line=new?Line(this);
line.drawLipse(a,b);?
}
if(e.getSource()==Show)
{
Graphics?g1=this.pane.getGraphics();
g1.setColor(Color.PINK);
g1.drawLine(0,300,920,300);//----x---
g1.drawLine(410,0,410,720);//----y---
g1.dispose();
}
}/*method?actionPerformed*/
}
class?Line
{
MainFrame?jb;
Line(MainFrame?jb)
{
this.jb=jb;
}
public?void?drawLipse(int?a,int?b)
{
int?x,y;
double?d1,d2;
x=0;??y=b;
d1=b*b+a*a*(-b+0.25);
Graphics?g=jb.pane.getGraphics();
g.setColor(Color.red);
g.drawLine(x+410,y+300,x+410,y+300);
g.drawLine(-x+410,-y+300,-x+410,-y+300);
g.drawLine(-x+410,y+300,x+410,-y+300);
g.drawLine(x+410,-y+300,x+410,-y+300);
try
{
while(b*b*(x+1)a*a*(y-0.5))
{
if(d1=0)
{
d1+=b*b*(2*x+3);
x++;
}
else
{
d1+=(b*b*(2*x+3)+a*a*(-2*y+2));
x++;
y--;
}
g.drawLine(x+410,y+300,x+410,y+300);
g.drawLine(-x+410,-y+300,-x+410,-y+300);
g.drawLine(-x+410,y+300,x+410,-y+300);
g.drawLine(x+410,-y+300,x+410,-y+300);
Thread.sleep(30);
}//?top?of?while?
}catch(Exception?e){}
d2=b*b*(x+0.5)*(x+0.5)+a*a*(y-1)*(y-1)-a*a*b*b;
try
{
while(y0)
{
if(d2=0)
{
d2+=b*b*(2*x+2)+a*a*(-2*y+3);
x++;
y--;
}
else
{
d2+=a*a*(-2*y+3);
y--;
}
g.drawLine(x+410,y+300,x+410,y+300);
g.drawLine(-x+410,-y+300,-x+410,-y+300);
g.drawLine(-x+410,y+300,x+410,-y+300);
g.drawLine(x+410,-y+300,x+410,-y+300);
Thread.sleep(30);
}/*?bottom?of?while*/
}catch(Exception?e){}
}?/*DrawLipse*/?
}
class?CloseWindow?extends?WindowAdapter
{
public?void?windowClosing(WindowEvent?e)
{
System.exit(0);
}
}