• 大小: 8KB
    文件类型: .java
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: Java
  • 标签:

资源简介

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

评论

共有 条评论