Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Desktop Canvas Clear ? (https://www.delphipraxis.net/89975-desktop-canvas-clear.html)

ebber 9. Apr 2007 20:15


Desktop Canvas Clear ?
 
Hallo

ich habe so was auf den Desktop gezeichnet

Delphi-Quellcode:

var
DP: TCanvas;
begin
  DP := TCanvas.Create;
  DP.Handle := GetDC(0);
  DP.font.Height:=(40);
  DP.font.Name:=('Verdana');
  DP.font.Color:=(cllime);
  DP.font.Style:=[fsBold];
  DP.TextOut(round(Screen.width/2-150),round(Screen.height/2+Screen.height/4),'Laustärke :'+inttostr(100-round(100/72*Form2.Trackbar1.position))+' %');
  ReleaseDC(0, DP.Handle);
  DP.Handle := 0;
  DP.Free;
end;

wie bekomme ich das wieder weg ?

MfG

bitsetter 9. Apr 2007 21:00

Re: Desktop Canvas Clear ?
 
Hallo,

versuche es doch mal hiermit:
Der Desktop wird neu gezeichnet

ebber 9. Apr 2007 21:09

Re: Desktop Canvas Clear ?
 
Mit

Delphi-Quellcode:
invalidaterect(windowfromdc(0), nil, false);
würde es gehen aber der ganze Desktop flimmert dann immer kurz auf.

Könnte man es vielleicht mit transparenter Farbe übermalen ? Ich hab das mit clnone probiert aber dann wird es schwarz.

MfG

ebber 20. Apr 2007 13:49

Re: Desktop Canvas Clear ?
 
Das muss doch irgendwie gehen oder ? Vielleicht wenn man das anders draufzeichnet ?

Oder kann man wenigstens nur einen Teil des Desktops neuzeichen ?

MfG

Robert Marquardt 20. Apr 2007 13:55

Re: Desktop Canvas Clear ?
 
Denken hilft. Ich wuerde mal InvalidateRect in der Win32-Hilfe nachschlagen. Fuer irgendwas muss der Namensbestandteil "Rect" doch gut sein.

ebber 20. Apr 2007 14:43

Re: Desktop Canvas Clear ?
 
Gibt es keine andere möglichkeit ? Wer eine Logitech Tastatur hat, die hat ja auch so eine Anzeige auf dem Desktop und da geht das auch gut ?

---

Ich habe das jetzt gemacht aber irgendwie wills nicht gehen.

Delphi-Quellcode:

var rectnz:PRect;

begin

rectnz.Top:=5;
rectnz.Bottom:=10;
rectnz.Left:=5;
rectnz.Right:=20;

invalidaterect(windowfromdc(0), rectnz, false);
Was habe ich falsch gemacht ?

MfG

SirThornberry 20. Apr 2007 14:47

Re: Desktop Canvas Clear ?
 
wenn ich es mit den obirgen koordinaten für die Textausgabe vergleiche würde ich sagen es liegt an dem bereich den du neu zeichnen lässt.

Robert Marquardt 20. Apr 2007 14:50

Re: Desktop Canvas Clear ?
 
Der Code ist ja auch falsch.
Delphi-Quellcode:
var
  rectnz: TRect;
begin
  rectnz.Top:=5;
  rectnz.Bottom:=10;
  rectnz.Left:=5;
  rectnz.Right:=20;
  InvalidateRect(WindowFromDC(0), @rectnz, false);

ebber 20. Apr 2007 15:01

Re: Desktop Canvas Clear ?
 
Es ging nicht weil ein Fehler kam nicht weil es da nicht neugezeichnet wurde.
So geht es zwar ohne Fehler, aber irgendwie wird immer noch der ganze Desktop neugezeichnet und es flimmert weiterhin kurz auf.


Zitat:


msdn:

Parameters

hWnd
[in] Handle to the window whose update region has changed. If this parameter is NULL, the system invalidates and redraws all windows, and sends the WM_ERASEBKGND and WM_NCPAINT messages to the window procedure before the function returns.

Hat es vielleicht was damit zu tun ?


MfG

SirThornberry 20. Apr 2007 15:22

Re: Desktop Canvas Clear ?
 
Zitat:

...Wer eine Logitech Tastatur hat, die hat ja auch so eine Anzeige...
da ist es auch viel einfacher. Man nimmt einfach ein Form, setzt die TransparentColor auf die Farbe des Forms und setzt Alphablend auf True.
Somit wird alles Transparent/durchklickbar was die Farbe TransparentColor hat.


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