Zitat von
himitsu:
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.
Hallo,
ich habe diesen etwas angestaubten Beitrag ausgegraben, weil er dem was ich brauche bisher am nächsten kommt. Ich habe versucht ein kleines screengrabbertool zu schreiben mit dem man ein transparentes Wasserzeichen auf einen beliebigen Hintergrund blenden und davon dann einen screenshot machen kann.
Soweit habe ich das auch hinbekommen - nur beim besagten screenshot wurde das alpha verblendete Wasserzeichen nicht angezeigt, diese Möglichkeit hier ist die erste die funktioniert.
Mir gefällt es aber nicht, über die Zwischenablage gehen zu müssen die ja dadurch gelöscht wird - deswegen nun meine Frage, gibt es noch eine andere - einfache - Möglichkeit einen Screenshot zu erzeugen der auch transparente Forms mitnimmt?
Da ich erst seit 2 Wochen delphi mache und sonst wenig Vorkenntnisse habe, wäre ich für anfängefreundliche Antworten (eventuell mit Links zu Beispielen) dankbar.
Gruß