Hallo!
Ich nutze diese Methode um einen Screenshot zu machen:
http://www.delphipraxis.net/2654-scr...speichern.html
Für meine Zwecke habe ich das ganze etwas abgeändert:
Delphi-Quellcode:
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;
Damit habe ich die Möglichkeit einen Screenshot von einem bestimmten Bereich vom Bildschirm zu machen.
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?