1

我正在尝试创建一个程序,该程序采用 y=mx+b 形式的用户输入字符串,并使用输入的方程绘制一条线。我唯一不满意的是这个单一的问题:如何获取计算的 x 和 y 值并将它们放在 g.drawLine 参数中?

    public void paint(Graphics g){
    g.drawLine(x,y,x2,y2);
    g.setColor(Color.black);
}
4

3 回答 3

1

您可以定义一个具有 m、b 等实例变量的 Line 类,并让其paint 或 display 方法使用这些变量绘制一条线。然后,从该类中创建一个 Line 对象并在该类中调用其绘制方法(将图形对象作为参数传递)。这将有一个额外的好处,如果您想绘制多条线,您可以只创建多个 Line 对象并调用它们的每个绘制方法。

主要是这样的:

public void paint(Graphics g) {
    myLine.paint(g);
    ...

...在 Line 类中:

public void paint(Graphics g) {
    g.drawLine(myx1, myy1, myx2, myy2);
    ....

编辑:如果您想要一个非常快速的解决方案并且不需要使程序可扩展,您还可以将行的属性存储为主类的静态变量。那看起来像:

class Main {
    static int lineInformation;

    void userInputMethod() {
        lineInformation = ... // the user input
        ...
    }

    public void paint(Graphics g) {
        g.drawLine(lineInformation,...);
        ...
    }
}

不过,我肯定会再次为您以后使用或修改的程序推荐一个 Line 类。

于 2012-10-29T01:40:09.190 回答
0

一份粗略的清单

  1. 从字符串中提取 m 和 b。
  2. 为 x 插入 0 并将 (x,y) 对用作第一个点
  3. 插入 x 的宽度并将该结果用于第二个点
  4. -y + height如果您希望它在我们向上移动时随着 y 的增长而绘制成图表,您需要采取
于 2012-10-29T01:38:30.913 回答
0

这将确保线条填充组件的区域:

double m= ...
double b= ...
double x=g.getClipBounds().x;
double x2=g.getClipBounds().x+g.getClipBounds().width;
g.drawLine(x,m*x+b,x2,m*x2+b);
于 2012-10-29T01:48:24.293 回答