Einzelnen Beitrag anzeigen

Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

Screenshot mit Transparenz

  Alt 22. Aug 2013, 12:17
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?
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat