资源简介
java实现的计算机图形学直线和圆的绘制算法,包括DDA算法,中点直线算法,Bresenham算法以及中点画圆算法,集成在一个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;//圆心坐标
public CGAlgorithm() {
// TODO Auto-generated constructor stub
settitle(“计算机图形学算法实现“);
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(“中点划线算法“);
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(“中点画圆算法“);
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“请输入圆的半径:““数值输入“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(“起点坐标:“);
Msg_p.add(lb_beg);
txf_beg = new JTextField(5);
txf_beg.setEditable(false);
Msg_p.add(txf_beg);
lb_end = new JLabel(“终点坐标:“);
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
评论
共有 条评论