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/)
-   -   Delphi TImage bzw. TPaintbox refresh Problem (https://www.delphipraxis.net/113476-timage-bzw-tpaintbox-refresh-problem.html)

darkdonald 8. Mai 2008 12:34


TImage bzw. TPaintbox refresh Problem
 
Hallo!!

Ich schreibe grad ein Programm, dass mir einige Informationen auf dem Display meiner G15 Tastatur anzeigen soll. Dazu wird einfach mit Canvas eine Paintbox (bzw. Image) 'gezeichnet' und diese anschliessend an die G15-Komponente übergeben. Das Tool soll nur im Tray-Bereich erscheinen, also normalerweise ohne eigenes Fenster laufen.

Wenn ich nun mit einer Paintbox arbeite, wird das Display nur solange aktualisiert, wie das Fenster auf dem Desktop sichtbar ist, ist es verdeckt oder nur im Tray, zeigt es nichts mehr an... Eigentlich logisch bei einer Paintbox. Mit TImage könnte ich das relativ leicht umgehen, allerdings würde ich gerne bei der Paintbox bleiben, erstens aus Performancegründen und zweitens weil dann das lästige (und zeitraubende) löschen bzw. neuzeichnen geänderter Bereiche entfällt...

Gibt es irgendeine Möglichkeit, die Paintbox darzustellen auch wenn das Programm minimiert ist??

Ich hoffe, jemand weiss Rat...

Gruss
Darkdonald

michaelg 9. Mai 2008 01:29

Re: TImage bzw. TPaintbox refresh Problem
 
Warum malst Du Dir nicht ein Bitmap im Speicher und schaufelst es dann auf das Display. So ein Display hat doch bestimmt ein Handle. Dann bist Du unabhängig von der Sichtbarkeit des Fensters.

Ansonsten google doch mal nach lglcd_dda.rar. Das ist auch ein Beispiel dabei.

Medium 9. Mai 2008 01:39

Re: TImage bzw. TPaintbox refresh Problem
 
Das Display selber kann ohnehin nur ca. 10-15fps darstellen. Das zusammen mit der kleinen Größe des Bildes macht das "zeitraubende Löschen" zu "performancetechnisch total egal". Die o.g. Lib erwartet, wenn sie die selbe ist, die ich mal ausprobiert hab (ist was her, ich weiss den Namen nicht mehr genau) ohnehin ein TBitmap als Quelle, so dass du getrost darauf zurückreifen solltest.
Man könnte auch noch tiefer gehen, und die Logitech DLL direkt ansprechen (wie, ist u.a. o.g. Lib zu entnehmen). In diesem Fall wird ein Array von Bytes übergeben - jedoch gibt es keine fertigen "Zeichenroutinen" für diese Struktur =)

darkdonald 13. Mai 2008 14:17

Re: TImage bzw. TPaintbox refresh Problem
 
Hallo!!

Bis jetzt habe ich mit der G15-Komponente (tg15lcd) von Smurfy gearbeitet. Die erwartet einen beliebigen Canvas als Quelle.

Ich habe mir mal die o.g. Lib angesehen. Ist soweit eigentlich eine schöne Sache, weil man direkt auf das Display zugreifen kann, also ohne die Logitech-Programme im Hintergrund. Allerdings ist es (glaub ich) nicht möglich eine Bitmap o.ä. zuzuweisen. Die Lib arbeitet leider NUR mir dem 'Array of Byte'. Oder habe ich da etwas übersehen? Gibt es evtl. eine fertige Lösung, eine Bitmap in das benötigte Array umzurechnen? Ich habe es gestern mal selbst versucht, aber meine Versuche wurden leider schon im Keim erstickt^^

Gruss
dd

darkdonald 13. Mai 2008 15:50

Re: TImage bzw. TPaintbox refresh Problem
 
Ich habe gerade mal versucht das ganze nicht mit TImage sondern mit TBitmap zu realisieren. Irgendwie komm ich nicht weiter :wall:

Hier mal der Code (Beispiel):

TImage (funktioniert):
image1.Canvas.TextOut(0,0,'Blablabla');
LcdG15.LcdCanvas := image1.Canvas;
LcdG15.SendToDisplay();

TBitmap (funktioniert NICHT, produziert einen leeren Screen):
bitmap1 := TBitmap.Create;
bitmap1.Canvas.TextOut(0,0,'Blablabla');
LcdG15.LcdCanvas := bitmap1.Canvas;
LcdG15.SendToDisplay();
bitmap1.free;


@Medium: Wie ist das mit dem Handle gemeint?

DeddyH 13. Mai 2008 15:57

Re: TImage bzw. TPaintbox refresh Problem
 
Und wenn Du mal Höhe und Breite der Bitmap setzt?

darkdonald 13. Mai 2008 16:30

Re: TImage bzw. TPaintbox refresh Problem
 
OMG, es kann so einfach sein. Thx für den Tip^^ Nu klappt's...


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:34 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