Einzelnen Beitrag anzeigen

MetalAddict

Registriert seit: 7. Jan 2011
14 Beiträge
 
#1

Achsenkreuz skalieren mit for-to-Schleife

  Alt 8. Jan 2011, 15:32
Hallo,

ich will wie im anderen Thread erwähnt einen GTR nachprogrammieren,
das Achsenkreuz ist jetzt einstellbar, nur muss der Ursprung noch in der PaintBox liegen, das reicht aber aus. Nun will ich die Achsen skalieren, allerdings will Delphi nicht so, wie ich es will:
Code:
procedure TForm1.Button1Click(Sender: TObject);
var xmin, xmax, ymin, ymax, deltax, deltay, einheitx, einheity, strichposx, strichposy, i: integer;
mystring: String;
begin
    xmin:=IntEdit1.Value;
    xmax:=IntEdit2.Value;
    ymin:=IntEdit3.Value;
    ymax:=IntEdit4.Value;
    deltax:=xmax-xmin;
    deltay:=ymax-ymin;
    einheitx:=PaintBox1.Width div deltax;
    einheity:=PaintBox1.Height div deltay;

    IntEdit5.Value:=deltax;
    IntEdit6.Value:=einheitx;
    IntEdit7.Value:=deltay;
    IntEdit8.Value:=einheity;


    //x-Achse
    PaintBox1.Canvas.MoveTo(0,round(einheity*ymax));
    PaintBox1.Canvas.LineTo(Paintbox1.Width,round(einheity*ymax));
    //myString := '';
    for i:=0 to deltax do
      strichposx:=i*einheitx;
      PaintBox1.Canvas.MoveTo(strichposx,(round(einheity*ymax))-5);
      PaintBox1.Canvas.LineTo(strichposx,(round(einheity*ymax))+5);
      //myString := myString + IntToStr(i);
      //Edit1.Text:=myString;

    //y-Achse
    PaintBox1.Canvas.MoveTo(round(einheitx*xmax),0);
    PaintBox1.Canvas.LineTo(round(einheitx*xmax),Paintbox1.Height);



end;
Die y-Achse ist zu vernachlässigen.
Edit1 zeigt auch 21 an, wie es sein sollte, also muss der Fehler irgendwo hier liegen, oder?
Code:
strichposx:=i*einheitx;
      PaintBox1.Canvas.MoveTo(strichposx,(round(einheity*ymax))-5);
      PaintBox1.Canvas.LineTo(strichposx,(round(einheity*ymax))+5);
Hier soll strichposx zuerst den Wert 0 haben, dann den Wert einer Längeneinheit auf der x-Achse mal 1, dann mal 2 usw.
strichposx soll also die x-Koordinate der kleinen Skalierungsstriche sein, und mit (round(einheity*ymax))-/+5 will ich eine y-Koordinate einmal 5 Pixel über der x-Achse und einmal unter ihr angeben, damit ich einen 10 Pixel langen Skalierungsstrich erhalte.
Es erscheint aber rein gar kein Strich, nur das Achsenkreuz, wie gehabt.
Wo liegt mein Fehler?

Ich bedanke mich im Vorraus für Antworten!
Grüße

P.S.:
Zitat:
Die Methode TextOut gibt beginnend am Punkt (X,Y) einen String auf der Zeichenfläche aus und setzt die Eigenschaft PenPos auf das Ende des Strings
Das bräuchte ich doch, um die Striche zu beschriften, oder?
  Mit Zitat antworten Zitat