Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.163 Beiträge
 
Delphi 12 Athens
 
#5

Re: Durchsichtiges Fenster (nicht Alpha Blend)

  Alt 6. Nov 2003, 21:57
Da fällt mir auf Anhieb diese kleine Taste ein - DRUCK, PRINT oder wie die noch so heißt.
Dadurch wird eine Kopie des Bildschirms in die Zwischenablage gelegt.

Diese kann man mit LoadFromClipboardFormat ins Image holen.
Dann muss das Bild nur noch an Hand der Fensterposition und -grösse beschitten werden.
Delphi-Quellcode:
Uses ClipBrd;

Procedure TForm1.Button1Click(Sender: TObject);
  Var BitMap : TBitMap;
    RahmenbreiteX, RahmenbreiteY: Integer;

  Begin
    BitMap := TBitMap.Create;
    Try
      BitMap.LoadFromClipBoardFormat(cf_BitMap,
        ClipBoard.GetAsHandle(cf_Bitmap), 0);
      Image1.Picture.BitMap.Width := Breite des Ausschnitts;
      Image1.Picture.BitMap.Height := Höhe des Ausschnitts;
      Image1.Picture.BitMap.Canvas.Draw(Form1.Left + RahmenbreiteLinks,
        Form1.Top + RahmenbreiteOben, BitMap);
    Finally
      BitMap.Free;
    End;
  End;
Es gibt dann noch die Möglichkeit die Windowsbotschaften abzuhören oder mit einem Timer zu prüfen, ob sich die Zwischenablage geändert hat. Wenn ein BitMap mit der Grösse und Farbauflösung des Monitors im Zwischenspeicher ist, ist die Chance groß, das es ein Screenshot ist.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat