| Autor |
Beitrag |
Petunia
Hält's aus hier
Beiträge: 4
|
Verfasst: Sa 19.02.05 19:33
Hi!
Beim folgendem wird ein Koordinatensystem erstellt, die Einteilung der x-Achse ist richtig, aber wie bekomme ich das mit der y-Achse hin?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| with image1.canvas do begin moveto(200,5); lineto(200,395);
for e:=1 to 19 do begin moveto (e*195,390); lineto(e*205,390); textout(e*185,380,inttostr(e-10)); textout(180,3,'y'); end;
moveto(5,200); lineto(395,200);
for e:=1 to 9 do begin moveto (e*40,195); lineto(e*40,205); textout(e*40-3,207,inttostr(e-5)); textout(398,205,'x'); end; |
Moderiert von raziel: Code- durch Delphi-Tags ersetzt.
|
|
OneOfTen
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 19.02.05 19:52
kanns nicht testen, daher ist es schwierig zu sagen, was falsch ist.
ich schätze, die untere For-Schleife ist für die x-Achse und deren Einteilung zuständig und die obere für die y-Achse. Dann muss doch aber die y-Variable variabel sein, nicht so:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| for e:=1 to 19 do begin moveto (e*195,390); lineto(e*205,390); textout(e*185,380,inttostr(e-10)); textout(180,3,'y'); end; |
sondern so:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| for e:=1 to 19 do begin moveto (195,e*390); lineto(205,e*390); textout(185,e*380,inttostr(e-10)); textout(180,3,'y'); end; |
ich kann aber nicht sagen, wie die Zahlen in diesem Beispiel gesetzt werden müssen
|
|
Petunia 
Hält's aus hier
Beiträge: 4
|
Verfasst: Sa 19.02.05 20:57
|
|
Petunia 
Hält's aus hier
Beiträge: 4
|
Verfasst: So 20.02.05 08:00
|
|
delfiphan
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: So 20.02.05 09:57
1. Ich würde dir raten, deinen Code besser darzustellen. Du solltest nach jedem Begin ein oder zwei Zeichen einrücken.
2. Definier Konstanten wie ZentrumX, ZentrumY, die "Range" und den Einheitsabstand in Pixel.
Achse in x-Richtung zeichnen:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| var I, W, H, ZentrumX, ZentrumY : Integer; S : String; const EinheitX = 20; EinheitY = -20; XMin = -5; XMax = 5; YMin = -5; YMax = 5; Markierung = 3; begin with Image1 do begin ZentrumX := Width div 2; ZentrumY := Height div 2; end; with Image1.Canvas do begin MoveTo(ZentrumX+XMin*EinheitX, ZentrumY); LineTo(ZentrumX+XMax*EinheitX, ZentrumY); For I := XMin to XMax do begin MoveTo(ZentrumX+I*EinheitX, ZentrumY-Markierung); LineTo(ZentrumX+I*EinheitX, ZentrumY+Markierung); S := inttostr(I); W := Image1.Canvas.TextWidth(S); H := Image1.Canvas.TextHeight(S); TextOut(ZentrumX-W div 2+I*EinheitX, ZentrumY-H-Markierung, S); end; end; |
Das ganze dann für Y umzuschreiben sollte dann keine Hexerei mehr sein. Du musst einfach die Argumente für X und Y bei allen Funktionen und richtig umbenennen vertauschen.
|
|
|