Thema: Delphi Auf Desktop zeichnen

Einzelnen Beitrag anzeigen

blackfin
(Gast)

n/a Beiträge
 
#13

AW: Auf Desktop zeichnen

  Alt 28. Jun 2010, 15:28
Sooo, für den Thread-Ersteller nun auch mal die Quick and dirty Methode, die ich gerade ausprobiert habe, für sein Vorhaben:

Form1 ist die Form, auf die gezeichnet wird.
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
var
FCanvas : TCanvas ;
FHandle : THandle ;
begin

  // Eigene Form maximieren und transparent schalten
  // (geht irgendwie mit clBtnface nicht, deswegen habe ich erstmal die Form.Color auf clWhite gesetzt)
  self.BorderStyle := bsNone ;
  self.WindowState := wsMaximized ;
  self.TransparentColor := true ;
  self.Color := clWhite ;
  self.TransparentColorValue := clWhite ;
  self.FormStyle := fsStayOnTop ;

  FHandle := self.Handle ;

  // Canvas kreieren
  FCanvas := TCanvas.Create;
  FCanvas.Handle := GetWindowDC(FHandle) ;

  // Fenster als layered und Durchklickbar setzen
  SetWindowLong(FHandle, GWL_EXSTYLE, GetWindowLong(FHandle, GWL_EXSTYLE) or WS_EX_TRANSPARENT or WS_EX_LAYERED);

  // Desktop als Fenster-Parent zuweisen
  SetWindowLong(FHandle, GWL_HWNDPARENT, 0);

  // Rechteck zeichnen :D
  FCanvas.Pen.Color := clLime;
  FCanvas.Rectangle(1,1,100,100);
  
  // Canvas wieder freigeben
  FreeAndNil(FCanvas) ;
end;

Geändert von blackfin (28. Jun 2010 um 15:32 Uhr)
  Mit Zitat antworten Zitat