如何获取先前计算的x和y值并将它们放入g.drawLine参数中

时间:2012-10-29 01:35:03

标签: java graphics

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

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

3 个答案:

答案 0 :(得分:1)

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

主要的东西:

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

...并在Line类中:

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

编辑:如果你想要一个非常快速的解决方案并且不需要使程序可扩展,你也可以将该行的属性存储为主类的static variables。那看起来像是:

class Main {
    static int lineInformation;

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

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

但是,我肯定会为你稍后使用或修改的程序推荐一个Line类。

答案 1 :(得分:0)

如何做的粗略列表

  1. 从字符串中提取m和b。
  2. 为x插入0并使用该(x,y)对作为第一个点
  3. 插入x的宽度并将结果用于第二个点
  4. 如果你希望它随着我们向上移动而增长,你需要-y + height

答案 2 :(得分: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);