![]() |
Einfache Graphen zeichnen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo ihr,
nun lag ![]() An sich ist diese Unit einfach zu verwenden:
Nun habe ich mehrmals folgendes erwähnt: Zitat:
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:
MfG
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; xZise |
Re: Einfache Graphen zeichnen
Liste der Anhänge anzeigen (Anzahl: 1)
Nicht schlecht!! :thumb:
Wenn du die Methoden DrawGrid, DrawGraph und DrawBars so änderst, dass sie ein TCanvas-Objekt übergeben bekommen:
Delphi-Quellcode:
dann sparst du noch etwas Zeit weil dann nicht immer FGraphBit.Canvas ausgewertet werden muss.
procedure DrawGrid(ACanvas:TCanvas);
procedure DrawGraph(ACanvas:TCanvas); procedure DrawBars(ACanvas:TCanvas); 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. |
Re: Einfache Graphen zeichnen
Danke ;)
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 |
Re: Einfache Graphen zeichnen
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)...
|
Re: Einfache Graphen zeichnen
Zitat:
Zitat:
Zitat:
MfG xZise |
Re: Einfache Graphen zeichnen
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. |
Re: Einfache Graphen zeichnen
Wo würdest du den BitBtl einsetzen?
MfG xZise |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:35 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-2025 by Thomas Breitkreuz