Delphi-PRAXiS :: Das Forum für Fragen zu Delphi
Das Experten Forum für Delphi Programmierer
Hilfe für Borland Delphi gibts es hier im Forum
Delphi Quelltexte und Source Codes
 
Winter 2008 - lieben Dank an Julius für ds Bild
Delphi-PRAXiS :: Foren-ÜbersichtForen-Übersicht Delphi-PRAXiS Modul-ÜbersichtSite-Map Delphi-PRAXiS durchsuchenSuchen Delphi-PRAXiS Code-LibraryCode-Library Jetzt registrieren!Registrieren Login  
   
 
0
 
Einfache Graphen zeichnen
Ein Thema von xZise.

Vorheriges Thema anzeigen  |  Nächstes Thema anzeigen
Neuen Beitrag schreiben Auf Beitrag antworten
als PDF-Datei herunterladenThema ausdrucken
 
Delphi-PRAXiS Forum - Übersicht -> Open-Source
Seite 1 von 1   [ 7 Beiträge ]  
 
 Autor 
 Nachricht 
 
xZise #1|Beitrag #970110Verfasst am: 28.11.2008, 19:14      Titel: Einfache Graphen zeichnen Antworten mit Zitat
sehr aktives Mitglied
Alter: 18
Status: offline
Beiträge: 3.289
angemeldet: 03.03.2006
Wohnort: Bad Schwartau
Delphi 2009 Professional

Hallo ihr,
nun lag dieser Thread ziemlich lange brach, aber ich habe mich heute mal dran gesetzt und sie vervollständigt.

An sich ist diese Unit einfach zu verwenden:
  • Zuerst obligatorisches wie erstellen, zerstören, setzen von Breite, Höhe, Parent
  • Nun kann man die verschiedenen Eigenschaften setzen:
    • Das Intervall (sofern nicht manuell der Graph neue Werte bekommt)
    • Ein Ereignis welches bei jedem Intervall ausgelöst wird (sofern nicht manuell der Graph neue Werte bekommt)
    • Der Abstand zweier Gitterlinien zueinander
    • Eine Graphfarbe
    • Eine Netzfarbe
    • Eine Hintergrundfarbe
    • Eine Balkenfarbe
    • Eine Basislinie (s.u.)
    • Und irgendwann sollte man es starten (sofern nicht manuell der Graph neue Werte bekommt Mr. Green )


Nun habe ich mehrmals folgendes erwähnt:
Zitat:
(sofern nicht manuell der Graph neue Werte bekommt)

Ich meine damit, dass es drei Modi gibt:
  • Angehalten
  • Manuell
  • Automatisch

Der Automatische Modus lässt intern einen Timer laufen, nachdem ein neuer Wert eingetragen werden soll. Dabei wird das Ereignis "OnInterval" aufgerufen, mit dem zweiten Parameter "NewValue". In diesem Parameter kann man nun den neuen Wert angeben.

Beim manuellen Modus muss dabei die Anwendung ".NextStep()" aufrufen, bei welchen ein Parameter übergeben wird, wie groß der neue Wert ist.

Nun ein Wort zur Basislinie:
Die Basislinie ist sozusagen die x-Achse: Dort haben die y-Werte alle 0. Nun kann man mit der Eigenschaft „Baseline“ bestimmen, wie hoch sie über der unteren Kante liegt. Natürlich nur im unskalierten Zustand.

Geraden/Balken:
Um Vergleiche zu ermöglichen habe ich eine Möglichkeit eingebaut eine Gerade anzugeben. Diese Gerade ist entweder horizontal oder vertikal und deren Y- bzw. X-Koordinate wird in jeweils einer IntegerList gespeichert. Da nun der Graph passend in der Vertikalen skaliert wird, werden die Horizontalen Balken in der Höhe skaliert. Leider ist das Feature relativ neu, sodass die horizontalen Gerade in der Grafik leider nicht so einfach zu handhaben sind. Aber die vertikalen gehen.

Wo wir gerade dabei sind: Einfach mit der linken (= horizontal)/rechten (=vertikal) Maustaste auf die Zeichenfläche klicken und schon sind sie da.

Zusätzlich habe ich noch eine kleine Demonstration angehangen.

So sieht das erstellen dynamisch dann aus:
Delphi-Quellcode: zusammenfalten | markieren
FGraph := TGraph.Create(self);
FGraph.Width := 500;
FGraph.Height := 200;
FGraph.Parent := self;
FGraph.MaxOffset := 10;
FGraph.Interval := 100;
FGraph.OnInterval := OnInterval;
FGraph.GraphColor := clRed;
FGraph.GridColor := clBlue;
FGraph.BackgroundColor := clBlack;
FGraph.BarColor := clGreen;
FGraph.BaseLine := 0;


MfG
xZise

[ An diesen Beitrag wurden eine oder mehrere Dateien angehängt. Zum Herunterladen bitte anmelden. ]

Wer grundlegende Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu gewinnen, verdient weder Freiheit noch Sicherheit. - (fälschlicherweise?) Benjamin Franklin

 Zuletzt bearbeitet von xZise am 28.11.2008, 20:20, insgesamt 1-mal bearbeitet.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
sx2008 #2|Beitrag #970212Verfasst am: 29.11.2008, 00:38      Titel: Re: Einfache Graphen zeichnen Antworten mit Zitat
aktives Mitglied
Status: offline
Beiträge: 382
angemeldet: 16.02.2008
Delphi 2007 Professional

Nicht schlecht!! Thumbs up!
Wenn du die Methoden DrawGrid, DrawGraph und DrawBars so änderst, dass sie ein TCanvas-Objekt übergeben bekommen:
Delphi-Quellcode: markieren
procedure DrawGrid(ACanvas:TCanvas);
procedure DrawGraph(ACanvas:TCanvas);
procedure DrawBars(ACanvas:TCanvas);

dann sparst du noch etwas Zeit weil dann nicht immer FGraphBit.Canvas ausgewertet werden muss.
Zusätzlich sieht es auch im Sourcecode besser aus.

Als Anregung hätte ich noch, dass der Graph optional auch "gefüllt" gezeichnet werden könnte.
Siehe Anhang.

[ An diesen Beitrag wurden eine oder mehrere Dateien angehängt. Zum Herunterladen bitte anmelden. ]
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
xZise #3|Beitrag #970262Verfasst am: 29.11.2008, 10:50      Titel: Re: Einfache Graphen zeichnen Antworten mit Zitat
sehr aktives Mitglied
Alter: 18
Status: offline
Beiträge: 3.289
angemeldet: 03.03.2006
Wohnort: Bad Schwartau
Delphi 2009 Professional

Danke Wink
Die Option hatte ich auch vor zu implementieren. Aber da muss ich nochmal gucken, da es bis zur Nullline gefüllt sein kann, oder ganz runter.

Dürfte aber (zumindest ersteres) nicht so schwer werden.

MfG
xZise

Wer grundlegende Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu gewinnen, verdient weder Freiheit noch Sicherheit. - (fälschlicherweise?) Benjamin Franklin
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
Florian H #4|Beitrag #972230Verfasst am: 03.12.2008, 21:56      Titel: Re: Einfache Graphen zeichnen Antworten mit Zitat
sehr aktives Mitglied
Alter: 20
Status: offline
Beiträge: 955
angemeldet: 30.03.2003
Wohnort: Mühlacker
Delphi 6 Professional

Bei mir flimmerts und die waagrechten Markierungsstriche (-> Linke Maustaste) kommen am völlig falschen Fleck und entgegengesetzt zur Mausbewegung (Maus weiter nach unten: Linie weiter oben)...
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
xZise #5|Beitrag #972700Verfasst am: 05.12.2008, 01:01      Titel: Re: Einfache Graphen zeichnen Antworten mit Zitat
sehr aktives Mitglied
Alter: 18
Status: offline
Beiträge: 3.289
angemeldet: 03.03.2006
Wohnort: Bad Schwartau
Delphi 2009 Professional

Florian H hat folgendes geschrieben:
Bei mir flimmerts


Darüber kann ich nichts genaueres sagen.

Florian H hat folgendes geschrieben:
die waagrechten Markierungsstriche (-> Linke Maustaste) kommen am völlig falschen Fleck und entgegengesetzt zur Mausbewegung (Maus weiter nach unten: Linie weiter oben)...


xZise hat folgendes geschrieben:
Leider ist das Feature relativ neu, sodass die horizontalen Gerade in der Grafik leider nicht so einfach zu handhaben sind. Aber die vertikalen gehen.

Weil ich muss die Y-Koordinate irgendwie in einen Wert auf der Kurve umwandeln. Wie genau ich das mache, überlege ich noch.

MfG
xZise

Wer grundlegende Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu gewinnen, verdient weder Freiheit noch Sicherheit. - (fälschlicherweise?) Benjamin Franklin
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
toms #6|Beitrag #972723Verfasst am: 05.12.2008, 09:36      Titel: Re: Einfache Graphen zeichnen Antworten mit Zitat
sehr aktives Mitglied
Status: offline
Beiträge: 3.715
angemeldet: 10.06.2002
Delphi 6 Professional

Hallo

Bei mir flickert es auch. DoubleBuffered := True reduziert das Flickern schon mal.
Zudem könnte bei Verwendung von BitBlt() das Flickern weiter reduziert werden.

PS: Es gibt noch einen Memory Leak: FHorizontalBars und FVerticalBars werden nicht freigegeben.

WinSpy 2008 - Der Fenster Spion (V.2.0.3.523 - 06.09.2008)
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
xZise #7|Beitrag #973417Verfasst am: 07.12.2008, 16:17      Titel: Re: Einfache Graphen zeichnen Antworten mit Zitat
sehr aktives Mitglied
Alter: 18
Status: offline
Beiträge: 3.289
angemeldet: 03.03.2006
Wohnort: Bad Schwartau
Delphi 2009 Professional

Wo würdest du den BitBtl einsetzen?

MfG
xZise

Wer grundlegende Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu gewinnen, verdient weder Freiheit noch Sicherheit. - (fälschlicherweise?) Benjamin Franklin
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
Anzeige-Optionen:    
 
Delphi-PRAXiS Forum - Übersicht -> Open-Source Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1   [ 7 Beiträge ]  
 
  Neuen Beitrag schreiben Auf Beitrag antworten
als PDF-Datei herunterladenThema ausdrucken
 
   
Gehe zu:  
Du darfst keine Beiträge in dieses Forum schreiben.
Du darfst auf Beiträge in diesem Forum nicht antworten.
Du darfst Deine Beiträge in diesem Forum nicht bearbeiten.
Du darfst Deine Beiträge in diesem Forum nicht löschen.
Du darfst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten.
Du kannst Dateien in diesem Forum nicht herunterladen.


Impressum / Kontakt
Allgemeine Geschäftsbedingungen
Verhaltenskodex & FAQ

Delphi-PRAXiS :: Das Forum für Delphi-Programmierer
Das Experten Forum für Delphi ProgrammiererHilfe für Borland Delphi gibts es hier im ForumDelphi Quelltexte und Source CodesDelphi-PRAXiS :: Das Forum für DelphiWindows APIInternet und NetzwerkeVCL und Datenbanken
 

Delphi-PRAXiS V.2005 III
© 2002-2009 by Daniel R. Wolf
powered by phpBB © phpBB Group

Impressum / Kontakt Allgemeine Geschäftsbedingungen