AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Achsenkreuz skalieren mit for-to-Schleife

Ein Thema von MetalAddict · begonnen am 8. Jan 2011 · letzter Beitrag vom 9. Jan 2011
 
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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz