![]() |
Graph erzeugen (x-achse 32000 pixel)
hey!
ich bin gerade dabei einen graph zu proggen, den man manuell erzeugen kann (soll über eine länge von 32000 pixel auf der x-achse gehen), ich hatte es mir so gedacht, das die x-werte timergesteuert gehen und man halt nur die maus auf und ab bewegen braucht, dass der erzeugt wird, dann muss man das i-wie mir nem array machen, dass die werte abgespeichert werden glaub ich.. könnt ihr mir zeigen wie es geht, ich hab noch nich so viel erfahrung mit delphi.. thx schonmal.. |
Re: Graph erzeugen (x-achse 32000 pixel)
also ich hab schonmal ein bisschen was geschafft, aber ich würds gerne mit canvas.ployline machen und nich mit canvas.lineto das hab ich schon ganz hinbekommen, dass ich selber einen graphen komplett zeichnen kann und das hatte ich dan mit formmousemove, aber diesmal will ich es ja mit nem timer machen..
Delphi-Quellcode:
ich hab bloß gar keine ahnung wie man das mit array machen soll..
var pt1:tpoint;
getcursorpos(pt1); label1.caption:='X:'+inttostr(pt1.x)+' Y:'+inttostr(pt1.y)// anzeigen der koordinaten canvas.polyline(pt1) |
Re: Graph erzeugen (x-achse 32000 pixel)
also so hab ich das gemacht was ich als erstes gemacht hab, wo man halt nur in das Formular gemalt hat den graphen..
Delphi-Quellcode:
var Form1:TForm1; xalt, yalt:integer;
procedure TForm1.FormMouseMove(Sender:TObject;Shift:TShiftState; X, Y:integer); var pt1:tpoint; begin getcursorpos(pt1); label1.caption:='X:'+inttostr(pt1.x)+' Y:'+inttostr(pt1.y);// anzeigen der koordinaten If (X-xalt>=0) //damit man nur nach rechts zeichnen kann then begin canvas.lineto(x, y); xalt:=X; yalt:=Y; end; end; end. |
Re: Graph erzeugen (x-achse 32000 pixel)
Bitte pushe deinen Beitrag nicht so. Du kannst deinen ersten Beitrag auch editieren. Der 2 und 3 Post waren / sind unnötig
|
Re: Graph erzeugen (x-achse 32000 pixel)
ja sry, aber könntet ihr mir vllt trotzdem helfen?
hallo??? bitte.. |
Re: Graph erzeugen (x-achse 32000 pixel)
Hi,
vielleicht solltest du nochmal ganz genau beschreiben, wo dein Problem liegt, denn ehrlich gesagt habe ich noch nicht genau verstanden, was du eigentlich erreichen willst und wo du im Moment hängst. Was genau soll den Timer-gesteuert sein? Vielleicht gibts du uns noch einpaar zusätzliche Informationen, dann wird dir bestimmt auch in irgendeiner Form geholfen... mfg |
Re: Graph erzeugen (x-achse 32000 pixel)
x-Achse 32000 Pixel
Ist das für ein Fußball-Stadion gedacht oder welchen Monitor hast du? |
Re: Graph erzeugen (x-achse 32000 pixel)
:o
Genau deswegen wäre es wichtig zu wissen, was der Thread-Ersteller erreichen will. Bin mir sicher, dass diese 32000 Pixel irgendwie gescrollt werden sollen, denn darstellen lassen die sich sicher nicht auf einem Bildschirm. Aber wie schon gesagt: Dafür brauchen wir einfach noch einpaar mehr Informationen ;-) |
Re: Graph erzeugen (x-achse 32000 pixel)
also es soll timergesteuert sein, dass die x-achse weiter scrollt(bzw. dass der x-wert immer weiter geht) und ich will halt dann mur die maus auf- und abbewegen müssen, dass ich eine kurve bekomme und die punkte der kurve sollen dann in nem array abgespeichert werden, dass ist halt so mein hauptproblem..
|
Re: Graph erzeugen (x-achse 32000 pixel)
Okay, wenn ich dich richtig verstanden habe, dann sollte das in etwa so gehen:
Du brauchst zunächst mal ein Array, in dem du die Werte speichern kannst:
Delphi-Quellcode:
Dann brauchst du einen Timer mit einem bestimmten Interval. Bei dem OnTimer-Ereignis musst du dann erstmal in x-Richtung "scrollen". Dazu würde ich eine Variable erstellen, die mir die momentane x-Position speichert:
Werte: array[0..32000] of integer;
// am besten im Private- oder Public-Bereich deiner Form
Delphi-Quellcode:
(Zu Beginn muss diese Variable dann natürlich auf 0 stehen.)
AktuellePosition : integer; // Private
Bei jedem Timer-Ereignis musst du den Wert der Variablen dann um 1 erhöhen. So kannst du schonmal ein "Scrollen" der Werte erreichen. Dazu musst du beachten, dass du natürlich nur solange den Wert erhöhen darfst, bis du das "Ende" deines Werte-Arrays erreicht hast. Dazu kannst du im Timer-Ereignis folgendes machen:
Delphi-Quellcode:
Da fehlt jetzt natürlich noch was, aber das hängt davon ab, wie du den aktuellen Wert per Maus bestimmen willst. Eignen würde sich dafür z.B. eine PaintBox, wobei du bei jedem Timer-Ereignis dann natürlich die y-Maus-Position relativ zu den PaintBox-Koordinaten bestimmen musst. Der Vorteil einer PaintBox wäre, dass du den Graphen dann direkt darauf ausgeben kannst. Aber wie gesagt: Das hängt jetzt davon ab, wie du die Koordinaten-Bestimmung machen willst.
// Erhoehen der aktuellen Position:
inc(AktuellePostition); // // Ueberpruefung, ob innerhalb des Arrays: // if AktuellePosition <= High(Werte) then begin // Maus-Position bestimmen // ... // Wert speichern Werte[AktuellePosition] := {...}; end else begin // Am Ende angekommen --> abbrechen // ... end; Hoffe, ich konnte dir schonmal einbisschen weiterhelfen und dir einen kleinen Denkanstoß geben. Bei Fragen kannst du dich ja hier einfach nochmal melden ;-) MFG |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 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