Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#8

AW: Screenshot aber wie?!

  Alt 8. Jan 2014, 18:42
Zitat:
Ich kenn mich mit canvas nicht wirklich aus
Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
 
var
  MyBitmap: TBitmap;
  MyBitmap2: TBitmap;
  MyDC: HDC;
  png: TPortableNetworkGraphic;
  R: TRect;
begin
  //Ermittelt den BoundsRect Bereich von Form1.
  //Das geht einfacher - aber das warum einfach, wenn es auch kompliziert geht
  //R := Form1.BoundsRect;
  R.TopLeft := Form1.BoundsRect.TopLeft;
  R.BottomRight := Form1.BoundsRect.BottomRight;
  //Ermittelt Handle für einen Gerätekontext, hier Wohl von Self.Handle
  MyDC := GetDC(Self.Handle);
  //Zwei Bitmaps-Objekte erstellen
  MyBitmap := TBitmap.Create;
  MyBitmap2 := TBitmap.Create;
  //Breite und Höhe für Bitmap2 zuweisen
  MyBitmap2.Width := R.Right - R.Left;
  MyBitmap2.Height := R.Bottom - R.Top;
  //Ein Png-Objekt erstellen
  png := TPortableNetworkGraphic.Create;
 
  try
    //Kenne ich nicht, läd vermutlich das Bild aus dem Gerätekontext
    MyBitmap.LoadFromDevice(MyDC);
    //Speichert das Bild irgendwo unter "FormsAppearance.bmp"
    //Richtige Pfadangeben sind besser. Ansonsten wird in dem aktuellen Ordner gespeichert.
    MyBitmap.SaveToFile('FormsAppearance.bmp');
    //Kopiert Bild von MyBitmap nach MyBitmap2 mit Rect-Bereichen (Quelle, Ziel) von ClientRect
    //ClientRect ist wohl der Rect-Bereich von dem aktuellen Formular
    //
    //MyBitmap2.Canvas.CopyRect(ClientRect,MyBitmap.Canvas,ClientRect);
    //eine Variante
    ########################################MyBitmap2.Canvas.copyRect(Rect(0, 0, MyBitmap2.Width, MyBitmap2.Height),MyBitmap.Canvas, R);
    //MyBitmap2 speichern irgendwo
    MyBitmap2.SaveToFile('FormsAppearance2.bmp');
    //An Png übergeben über Assign
    png.Assign(MyBitmap2);
    //Png speichern irgendwo
    png.SaveToFile('shottest.png');
  finally
    //Freigaben
    ReleaseDC(Self.Handle, MyDC);
    FreeAndNil(MyBitmap);
    FreeAndNil(MyBitmap2);
    png.Free;
  end;
end;
  Mit Zitat antworten Zitat