Bresenham 算法使用 Java应用程序 绘制直线的示例代码 每条线的起点和终点坐标:第1条: (50,150), (100,50);第2条:(150,150) , (100,50);第3条:(75,100) , (125,100)
时间: 2023-05-24 22:01:57 浏览: 88
Bresenham算法实现画直线
以下是Bresenham算法的Java代码,用于绘制直线:
```
import java.awt.*;
import javax.swing.JFrame;
public class BresenhamExample extends Canvas {
public void paint(Graphics g) {
// 设置线的颜色
g.setColor(Color.BLACK);
// 第1条线的起点和终点坐标
int x1 = 50, y1 = 150;
int x2 = 100, y2 = 50;
// 绘制第1条线
bresenhamLine(g, x1, y1, x2, y2);
// 第2条线的起点和终点坐标
x1 = 150;
y1 = 150;
x2 = 100;
y2 = 50;
// 绘制第2条线
bresenhamLine(g, x1, y1, x2, y2);
// 第3条线的起点和终点坐标
x1 = 75;
y1 = 100;
x2 = 125;
y2 = 100;
// 绘制第3条线
bresenhamLine(g, x1, y1, x2, y2);
}
// 使用Bresenham算法绘制直线
private void bresenhamLine(Graphics g, int x1, int y1, int x2, int y2) {
int dy = y2 - y1;
int dx = x2 - x1;
int stepx, stepy;
if (dy < 0) {
dy = -dy;
stepy = -1;
} else {
stepy = 1;
}
if (dx < 0) {
dx = -dx;
stepx = -1;
} else {
stepx = 1;
}
dy <<= 1;
dx <<= 1;
g.drawLine(x1, y1, x1, y1);
if (dx > dy) {
int fraction = dy - (dx >> 1);
while (x1 != x2) {
if (fraction >= 0) {
y1 += stepy;
fraction -= dx;
}
x1 += stepx;
fraction += dy;
g.drawLine(x1, y1, x1, y1);
}
} else {
int fraction = dx - (dy >> 1);
while (y1 != y2) {
if (fraction >= 0) {
x1 += stepx;
fraction -= dy;
}
y1 += stepy;
fraction += dx;
g.drawLine(x1, y1, x1, y1);
}
}
}
public static void main(String[] args) {
// 创建一个窗口
JFrame frame = new JFrame("Bresenham Example");
// 将Canvas添加到窗口中
frame.add(new BresenhamExample());
// 设置窗口的大小
frame.setSize(300, 300);
// 显示窗口
frame.setVisible(true);
}
}
```
这个程序使用Bresenham算法绘制了三条直线,每个线段的起点和终点坐标已经在代码中指定了。如果您需要绘制其他线段,可以根据自己的需求修改代码。
阅读全文