![]() |
Screenshot mit Transparenz
Hallo!
Ich nutze diese Methode um einen Screenshot zu machen: ![]() Für meine Zwecke habe ich das ganze etwas abgeändert:
Delphi-Quellcode:
Damit habe ich die Möglichkeit einen Screenshot von einem bestimmten Bereich vom Bildschirm zu machen.
procedure ScreenToFile(X, Y, Width, Height: Integer; AFileName: String);
var Bitmap: TBitmap; Canvas: TCanvas; begin Canvas := TCanvas.Create; try Canvas.Handle := GetWindowDC(0); try Bitmap := TBitmap.Create; try Bitmap.Width := Width; Bitmap.Height := Height; Bitmap.PixelFormat := pf32bit; (* Bitmap.Canvas.CopyRect(Screen.DesktopRect, Canvas, Screen.DesktopRect); Anstatt der folgenden Zeile, kann auch die CopyRect Funktion genutzt werden. Die CopyRect-Funktion nutzt zusätzlich ein paar Schutzmechanismen, welche für ScreenShots nicht notwendig sind. Ausserdem greift die CopyRect-Funktion auf StretchBlt-Funktion zurück, welche langsamer als BitBlt ist. *) BitBlt(Bitmap.Canvas.Handle, 0, 0, Width, Height, Canvas.Handle, X, Y, Bitmap.Canvas.CopyMode); Bitmap.SaveToFile(AFileName); finally Bitmap.Free; end; finally ReleaseDC(0, Canvas.Handle); end; finally Canvas.Free; end; end; Was ich jetzt noch brauche ist, dass von dem gemachten Bild von aussen her alles transparent wird, bis die ersten Linien kommen. Also im Prinzip ein Transparent-FloodFill auf den Punkt [0,0]. Wie mache ich sowas? Mit Bitmap.Canvas.FloodFill() kann ich ja ein Floodfill auslösen, aber wenn ich mich recht erinnere, hat TColor(was ich dem FloodFill übergeben muss) keinen Alphakanal. Habt Ihr Tipps für mich, wie das trotzdem geht? Ausserdem muss ich dazu das Bild im GIF- oder PNG-Format speichern, geht das? |
AW: Screenshot mit Transparenz
Die Windows GDI kennt keine Transparenz, und somit kennt auch TBitmap keine. Du müsstest auf eine andere Grafik-Engine setzen, z.B. GDI+ oder Graphics32. (Für beide gibt es Zuweisungsmöglichkeiten eines GDI Bitmaps.) Speichern als GIF oder PNG ist natürlich möglich. Ob die vorgenannten da fertige Methoden liefern weiss ich allerdings nicht aus dem Stegreif.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz