Delphi-PRAXiS
Seite 1 von 2  1 2      

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 Canvas im Hintergrund zeichnen / auslesen (https://www.delphipraxis.net/133526-canvas-im-hintergrund-zeichnen-auslesen.html)

ljmarkus 4. Mai 2009 06:45


Canvas im Hintergrund zeichnen / auslesen
 
Guten Morgen.

Mit folgendem Code schreibe und lese ich ein Canvas Feld aus. Das ganze funktioniert leider nur solange das
Programm im Vordergrund ist. Wie kann ich es machen das es auch im Hintergrund läuft ?

Delphi-Quellcode:

//....
for i := 0 to 448 do PaintBox1.Canvas.TextOut(i,0,' ');


MyTime := Time();
timebuffer := FormatDateTime('hh:mm',myTime);
PaintBox1.Canvas.TextOut(0,0,Edit1.Text);
PaintBox1.Canvas.TextOut(214,0,timebuffer);
PaintBox1.Canvas.TextOut(245,0,Edit2.Text);
Paint;

//------------------------------------------------------------------
// Zeile 0 lesen
pos := 0;
for i := 0 to 55 do Data[i] := #0;   // Setze Data auf 0
for j := 0 to 55 do
begin
  if PaintBox1.Canvas.Pixels[j+pos,0] = clBlack then bit[0] := 1 else bit[0] := 0;
  if PaintBox1.Canvas.Pixels[j+pos+1,0] = clBlack then bit[1] := 1 else bit[1] := 0;
  if PaintBox1.Canvas.Pixels[j+pos+2,0] = clBlack then bit[2] := 1 else bit[2] := 0;
//...

Danke, Markus

mkinzler 4. Mai 2009 06:48

Re: Canvas im Hintergrund zeichnen / auslesen
 
Wenn das Programm verdeckt ist, wird auch nicht gezeichnet ( ist dann ja auch überflüssig)

ljmarkus 4. Mai 2009 06:53

Re: Canvas im Hintergrund zeichnen / auslesen
 
hmm..
Welche möglichkeit gibt es denn noch ?

Ich muss die Pixel auslesen und per ComPort übertragen für eine Anzeige. Der Text wird im Canvas geschrieben und dann lese ich die Pixel aus und packe die fürs senden zusammen.

lg, markus

turboPASCAL 4. Mai 2009 07:06

Re: Canvas im Hintergrund zeichnen / auslesen
 
Erstelle dir einen Thread im Program der auf eine Bitmap zeichnet.
Zur Not könnte man auch an Stelle eines Threads einen Timer verwenden.

bernau 4. Mai 2009 09:28

Re: Canvas im Hintergrund zeichnen / auslesen
 
Nicht ausprobiert, aber ein "PaintBox1.invalidate" zwingt eigendlich zum neuzeichnen.

Gerd

Luckie 4. Mai 2009 09:54

Re: Canvas im Hintergrund zeichnen / auslesen
 
Trenne die Daten von der Darstellung.

Medium 4. Mai 2009 10:13

Re: Canvas im Hintergrund zeichnen / auslesen
 
Zitat:

Zitat von bernau
Nicht ausprobiert, aber ein "PaintBox1.invalidate" zwingt eigendlich zum neuzeichnen.

Gerd

Das führt letztlich nur die API InvalidateRect() mit dem Rect der Paintbox aus. Windows weiss aber wenn ein Control bzw. Canvas verdeckt ist, und zeichnet dann (edit: wenn überhaupt) das oberste verdeckende neu. Sonst würde das auch ganz fürchterlich flackern.

Ein Canvas bzw. DC kann immer nur das liefern, was auch gerade in dem zugehörigen Rect dargestellt wird - da führt kein Weg dran vorbei. Deswegen ist es auch absolut üblich ein Bitmap zu führen dass die aktuelle Anzeige enthält, und nur bei Bedarf (OnPaint) auf die PaintBox geblitted wird. Aus dem Bitmap kannst du dann natürlich auch die Daten zum senden holen ohne sie je anzeigen zu müssen.

Dipl Phys Ernst Winter 4. Mai 2009 12:48

Re: Canvas im Hintergrund zeichnen / auslesen
 
Zum Zeichnen einer Canvas im Hintergrund verwendet man die Canvas eines TBitMap Objektes.

Alles weitere hierzu steht in der OH

Luckie 4. Mai 2009 13:53

Re: Canvas im Hintergrund zeichnen / auslesen
 
Was soll der Quatsch? Das ist ungefähr genauso als, wenn ich die Zeitung morgens aus dem Briefkasten holen, sie zerreiste und am Küchentisch wieder zusammensetze, weil ich sie lesen will.

Trenn die Daten von der Drastellung und hol die Daten dann nicht aus der Paintbox, sondern daher wo du die Daten speicherst.

DeddyH 4. Mai 2009 13:54

Re: Canvas im Hintergrund zeichnen / auslesen
 
@Luckie: auf welchen Beitrag beziehst Du Dich denn jetzt?


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:46 Uhr.
Seite 1 von 2  1 2      

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