Java - Funktionsgraph zeichnen

OP #3609408
Lesenswert?

Hallo

Ich versuche gerade mit Java einen Funktionsgraphen zu zeichnen. Dazu 
habe ich eine Methode "getY" die mir zu einem x Wert den passenden 
y-Wert zurückgibt. Jetzt wollte ich jeden Punkt einzeln mit einer 
while-Schleife zeichnen lassen. Allerdings wird immer nur der letzte 
Punkt gezeichnet. Es sieht so aus, als würde bei jedem Durchgang der 
while-Schleife alles von der while-Schleife gelöscht. Allerdings wird 
das Koordinatensystem nicht gelöscht, eben nur die Punkte aus der 
while-Schleife...
Wo liegt da das Problem?

Code der paintComponent()

protected void paintComponent(Graphics g)
    {
      super.paintComponent(g);

      g.drawLine(0, 255, 1800, 255);
      g.drawLine(400, 0, 400, 540);

      do
      {
        g.drawLine(x, fn.getY(x), x, fn.getY(x));
        x++;
      } while(x<50);
    }

(fn ist ein Objekt der Klasse mit der Methode getY(x))
#3609929
Lesenswert?

Vlad Tepesch schrieb:
> müsste es nicht eher irgendwie heißen:
>
1
> for(x=0; x<50; ++x){
2
>   g.drawLine(x, fn.getY(x), x+1, fn.getY(x+1));
3
> }
4
>
>
> wie sieht denn eine Linie aus, die ich von einem Punkt zu sich selbst
> zeichne? Ich würde da gar nix malen.

Das wird's wohl sein. Eine Linie von (x,y) nach (x,y) ist halt nicht so 
prickelnd, eben ein Punkt. Von (x1, y1) nach (x2, y2) wird's da schon 
spannender.
#3609944
Lesenswert?

Und dann gibts da auch noch den Fall, dass in
1
protected void paintComponent(Graphics g) {
2
  super.paintComponent(g);
3
  g.drawLine(0, 255, 1800, 255);
4
  g.drawLine(400, 0, 400, 540);
5
  do
6
  {
7
    g.drawLine(x, fn.getY(x), x, fn.getY(x));
8
    x++;
9
  } while(x<50);
10
}

x schon mal grundsätzlich einen Wert größer/gleich 50 hat, wenn die 
Funktion betreten wird. Auch in diesem Fall wird nur der letzte Punkt 
gemalt und der Fall könnte ganz leicht auftreten, wenn diese Funktion 
mehrmals aufgerufen wird.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren