-
大小: 8KB文件類型: .java金幣: 1下載: 0 次發(fā)布日期: 2021-06-16
- 語言: Java
- 標(biāo)簽:
資源簡介
java實(shí)現(xiàn)的計(jì)算機(jī)圖形學(xué)直線和圓的繪制算法,包括DDA算法,中點(diǎn)直線算法,Bresenham算法以及中點(diǎn)畫圓算法,集成在一個UI中,方便直觀。
代碼片段和文件信息
package?com;
import?java.awt.BorderLayout;
import?java.awt.Color;
import?java.awt.FlowLayout;
import?java.awt.Graphics;
import?java.awt.Point;
import?java.awt.event.ActionEvent;
import?java.awt.event.ActionListener;
import?java.awt.event.MouseEvent;
import?java.awt.event.MouseListener;
import?javax.swing.Jframe;
import?javax.swing.JLabel;
import?javax.swing.JMenu;
import?javax.swing.JMenuBar;
import?javax.swing.JMenuItem;
import?javax.swing.JOptionPane;
import?javax.swing.JPanel;
import?javax.swing.JTextField;
public?class?CGAlgorithm?extends?Jframe?{
JMenuBar?mub_main;
JMenu?mu_linemu_circle;
JMenuItem?it_dda?it_mid?it_breit_midcir;
JLabel?lb_beg?lb_end;
JTextField?txf_beg?txf_end;
Point?spos?epos;
Graphics?g;
JPanel?Draw_p;
String?state?=?“DDA“;
int?add_x=300add_y=150;//圓心坐標(biāo)
public?CGAlgorithm()?{
//?TODO?Auto-generated?constructor?stub
settitle(“計(jì)算機(jī)圖形學(xué)算法實(shí)現(xiàn)“);
setSize(610?400);
spos?=?new?Point();
epos?=?new?Point();
mub_main?=?new?JMenuBar();
mu_line?=?new?JMenu(“直線繪制算法“);
mub_main.add(mu_line);
mu_circle=new?JMenu(“圓繪制算法“);
mub_main.add(mu_circle);
it_dda?=?new?JMenuItem(“DDA算法“);
it_dda.addActionListener(new?ActionListener()?{
@Override
public?void?actionPerformed(ActionEvent?arg0)?{
//?TODO?Auto-generated?method?stub
state?=?“DDA“;
}
});
mu_line.add(it_dda);
it_mid?=?new?JMenuItem(“中點(diǎn)劃線算法“);
it_mid.addActionListener(new?ActionListener()?{
@Override
public?void?actionPerformed(ActionEvent?e)?{
//?TODO?Auto-generated?method?stub
state?=?“Mid“;
}
});
mu_line.add(it_mid);
it_bre?=?new?JMenuItem(“Bresenham算法“);
it_bre.addActionListener(new?ActionListener()?{
@Override
public?void?actionPerformed(ActionEvent?e)?{
//?TODO?Auto-generated?method?stub
state?=?“Bre“;
}
});
mu_line.add(it_bre);
it_midcir=new?JMenuItem(“中點(diǎn)畫圓算法“);
mu_circle.add(it_midcir);
it_midcir.addActionListener(new?ActionListener()?{
@Override
public?void?actionPerformed(ActionEvent?e)?{
//?TODO?Auto-generated?method?stub
String?r=JOptionPane.showInputDialog(null“請輸入圓的半徑:““數(shù)值輸入“JOptionPane.QUESTION_MESSAGE);
if(!r.trim().equals(““))
MidPointCircle(Integer.parseInt(r));
}
});
setJMenuBar(mub_main);
Draw_p?=?new?JPanel();
Draw_p.setBackground(Color.white);
add(Draw_p?BorderLayout.CENTER);
JPanel?Msg_p?=?new?JPanel(new?FlowLayout(FlowLayout.CENTER?15?5));
lb_beg?=?new?JLabel(“起點(diǎn)坐標(biāo):“);
Msg_p.add(lb_beg);
txf_beg?=?new?JTextField(5);
txf_beg.setEditable(false);
Msg_p.add(txf_beg);
lb_end?=?new?JLabel(“終點(diǎn)坐標(biāo):“);
Msg_p.add(lb_end);
txf_end?=?new?JTextField(5);
txf_end.setEditable(false);
Msg_p.add(txf_end);
add(Msg_p?BorderLayout.SOUTH);
Draw_p.addMouseListener(new?MouseListener()?{
@Override
public?void?mouseReleased(MouseEvent?e)?{
//?TODO?Auto-generate
評論
共有 條評論