Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Geschwindigkeit einer Komponente, Eure Erfahrungen (https://www.delphipraxis.net/183959-geschwindigkeit-einer-komponente-eure-erfahrungen.html)

Chris211183 16. Feb 2015 11:39

Geschwindigkeit einer Komponente, Eure Erfahrungen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Ihr Lieben,

ich benötige mal eure Tips und Erfahrungen, wie ich jetzt am besten weiter vorgehen kann oder sollte.

Mein Histograph ist fertig, siehe Screenshot und getestet ist er soweit auch, sämtliche Eigenschaften funktionieren, wie sie sollen.

Dieser Histograph, soll mir später als Oszilloskop dienen.

Nun meine Frage: Wie geht man jetzt am besten vor, dass die Kurvenanzeige schnell ist.
Wenn er viele Werte bekommt (Ultraschallsignal), wie lässt man das am besten Darstellen ?
Die Komponente (Hintergrund und Skalierung) ändert sich dabei nicht.

Meine Idee : Diese in eine Bitmap speichern und den Graphen nur zeichnen lassen ???

Was habt ihr für Erfahrungen und Empfelungen mit sowas ?

Viele Grüße

Chris211183 17. Feb 2015 08:02

AW: Geschwindigkeit einer Komponente, Eure Erfahrungen
 
:gruebel: Keiner ?

Sherlock 17. Feb 2015 08:09

AW: Geschwindigkeit einer Komponente, Eure Erfahrungen
 
Mach doch einfach mal, und dann sieht man ja wo es hinführt, und wo es eventuell klemmt. Kurz gesagt: Probieren geht über studieren.

Sherlock

Medium 17. Feb 2015 13:53

AW: Geschwindigkeit einer Komponente, Eure Erfahrungen
 
Der Ansatz: Hintergrund in separatem Bitmap vorhalten und bem Neuzeichnen diesen erst auf das Ausgabebild malen und danach die veränderlichen Daten zeichnen absolut richtig. Was es dabei aber unbedingt zu vermeiden gilt, ist die Verwendung von TCanvas.Pixels[]. Das ist nämlich grotten lahm. Kopieren von Bildern mit BitBlt() dagegen ist super flott, und die Zeichenroutinen, die TCanvas sonst noch bereitstellt sind auch in der Regel ausreichend schnell.
Und wenn alle Stricke reissen, bleibt auch noch die Nutzung der Graphics32 Lib, die insgesamt schneller ist als TBitmap und allem was da so zu gehört.

Mal so Pseudocodig:
Delphi-Quellcode:
// Bei Programmstart:
  DrawBackgroundImageTo(BackgroundBitmap);

// Im OnPaint:
  BitBlt(BackgroundBitmap.Canvas.Handle, DisplayBitmap.Canvas.Handle, SRCCOPY);
  DrawDynamicDataTo(DisplayBitmap);
  BitBlt(DisplayBitmap.Canvas.Handle, AnzeigePaintbox.Canvas.Handle, SRCCOPY);
Und damit das Neuzeichnen immer bei Eintreffen neuer Daten gemacht wird, musst du nur noch im Handler für den Empfang am Ende ein
Delphi-Quellcode:
DeinAnzeigeFormular.Invalidate;
machen (Wodurch OnPaint automatisch ausgelöst wird.)

Chris211183 18. Feb 2015 08:23

AW: Geschwindigkeit einer Komponente, Eure Erfahrungen
 
Super ! vielen Dank !
Dass das Zeichnen mit Pixelkoordinaten so langsam ist, war mir nicht bekannt !

Vielen Dank für die Tips !


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz