Entwickler-Ecke
Sonstiges (Delphi) - Graph Canvas
shrubman - Di 07.12.04 19:16
Titel: Graph Canvas
Hi,
Ich habe folgenes geschrieben :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TForm1.Button1Click(Sender: TObject); var x,u:extended; y,zaehler:integer; z:string; begin y:=strtoint(Edit2.Text); x:=-3; zaehler:=0; StringGrid1.cells[0,0]:='x'; StringGrid1.cells[1,0]:='y'; repeat u:=power(x,y); Zaehler:=zaehler+1; StringGrid1.RowCount:=zaehler+1; StringGrid1.Cells[0,Zaehler]:=floattostr(x); StringGrid1.Cells[1,Zaehler]:=floattostr(u); x:=x+1; until zaehler=7 end; |
wie lasse ich das jetzt in Image1.Canvas anzeigen also den Graphen... ich habe schon einige threads darüber gelesen aber nicht richtig verstanden ( nur der ansatz reicht schon normal lerne ich schnell )
Ich hoffe ihr könnt mir da weiterhelfen
Kroni - Di 07.12.04 19:19
Den Graphen der Tabelle?
Dafür musste mal ne Procedure schreiben, die dir aus den Koordinatensystempunkten Bildschirmpunkte errechnen und dann eben alle Punkte dort eintragen und Linien ziehen o.ä.
Viel Spaß
shrubman - Di 07.12.04 19:36
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TForm1.Button1Click(Sender: TObject); var x,u,y,zaehler,k:integer; z:string; begin y:=strtoint(Edit2.Text); x:=-3; zaehler:=0; StringGrid1.cells[0,0]:='x'; StringGrid1.cells[1,0]:='y'; repeat u:=1; For k:=1 to y do begin u:=u*x end; Zaehler:=zaehler+1; StringGrid1.RowCount:=zaehler+1; StringGrid1.Cells[0,Zaehler]:=floattostr(x); StringGrid1.Cells[1,Zaehler]:=floattostr(u); x:=x+1; image1.Canvas.Pixels[x,u]:=clred; until zaehler=7 end; |
das funzt nicht da er irgendwo punkte macht aber nicht striche wie mach ich das ?
shrubman - Mi 08.12.04 16:29
Titel: sry
Ich verstehe dein Programm nicht... kann man das nicht einer einfach mal hierein schreiben oder ist das viel und kompliziert ?? Ich komm mit MoveTo und LineTo nicht richtig klar....
shrubman - Mi 08.12.04 16:46
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:
| procedure TForm1.Button1Click(Sender: TObject); var x,u,y,zaehler,k:integer; z:string; begin y:=strtoint(Edit2.Text); x:=-3; zaehler:=0; StringGrid1.cells[0,0]:='x'; StringGrid1.cells[1,0]:='y'; image1.canvas.MoveTo(200,0); repeat u:=1; For k:=1 to y do begin u:=u*x end; Zaehler:=zaehler+1; StringGrid1.RowCount:=zaehler+1; StringGrid1.Cells[0,Zaehler]:=floattostr(x); StringGrid1.Cells[1,Zaehler]:=floattostr(u); x:=x+1; image1.Canvas.LineTo((x*30),(u*5)); until zaehler=7 end; |
<- jetzt macht er verwirrende striche..
wulfskin - Mi 08.12.04 16:55
Hallo shrubman,
wenn du mit den Befehlen, die Luckie genannt hat, nicht zurechtkommst, dann kannst du auch mal die Delphi-Hilfe bemühen (-> F1), die hilft wirklich weiter.
Trotz allem eine kurze Erläuterung. Eine Linie, eigentlich eine Strecke, ist durch zwei Punkte begrenzt, die den Anfang und das Ende markieren.
Um nun einen Linie von A nach B zu zeichnen, musst du zuerst die Stiftposition (siehe aus PenPos) mit MoveTo auf die Stelle setzen, wo später der Punkt A sein soll. Danach kannst du mit LineTo einen Linie nach B zeichnen.
Das heisst also, dass du in deiner Schleife zuerst noch MoveTo benutzen solltest, bevor du mit dem Linienzeichnen beginnst. Achja, nachdem die Linie mit MoveTo gezeichnet wurde, wandert die Schriftposition automatisch zur aktuellen Position (im Beispiel B).
Gruß Hape!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!