java - 我怎样才能让这些 java 行算法工作?

标签 java algorithm line draw

我正在尝试演示 Bresenham 的直线算法,而不是不太复杂的方法。我对编程很陌生,我确信我的问题很基本,但是解决方案和解释会非常有帮助。谢谢!

第一段代码直接来 self 的书。

import java.awt.*;
import javax.swing.*;

public class lines extends JPanel {
    int deltaX;
    int deltaY;
    int DY2;
    int DX2;
    int Di;

    public void basic(int x1, int y1, int x2, int y2, Graphics
    g){
        int deltaX = x2-x1;
        int deltaY = y2-y1;
        float m = (float)deltaY/(float)deltaX;
        float c = y1 - (m*x1);
        for (int x=x1; x<x2; x++){
            float floatY = (m*x) + c;
            int y = Math.round(floatY);
            g.drawLine(x,y,x,y);
        }
    }

   public void brz(int x1, int y1, int x2, int y2,
    Graphics g){
    deltaX = x2-x1;
    deltaY = y2-y1;
    DY2 = 2* deltaY;
    DX2 = 2* deltaX;
    Di = DY2 - deltaX;
    int x = x1;
    int y = y1;
    int prevy;
    while (x<x2) {
        x++;
        prevy = y;
        if (Di > 0){
            y++;
        }
        g.drawLine(x,y,x,y);
        Di = Di + DY2 - (DX2 * (y - prevy));
    }
}

public void paintComponent(Graphics g){
    basic(10,10,40,30,g);
    basic(10,10,40,90,g);
    brz(50,50,150,60,g);
    brz(50,50,150,120,g);
    brz(50,50,150,140,g);
}

它告诉我我需要一个主类,所以我添加了这个:

public static void main(String[] args) {
     paintComponent(Graphics g);
}

现在它给了我这个:

lines.java:15: ')' 预期 paintComponent(图形g);

lines.java:15: 表达式的非法开始 paintComponent(图形g);

最佳答案

在 main 中将行更改为

    JFrame f = new JFrame("Swing Paint ");

    f.add(new YourPanelName());
    f.pack();
    f.setVisible(true);

然后做一些j2ee swings api研究:)

关于java - 我怎样才能让这些 java 行算法工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18796431/

相关文章:

java - 使用空参数调用重载方法是一种好习惯吗?

java - 我该如何修正这个公式?

algorithm - 跟踪/计算词频

java - 为什么这段代码只旋转正方形?

java - 如何在java的IF语句中画一条线

c++ - 线段球体相交测试c++

java - float 百分比产生错误答案

java - 在上传到 Google App Engine 之前如何打包我的类(class)

algorithm - 将一组形状简化为单个形状

C++ 获取文件总行号