d
Zitat von
_frank_:
willst du einen Screenshot machen und diesen anzeigen in einem Form, welches wie ein Bilderrahmen aussieht, oder willst du nur dass ein Rahmen draufgemalt wird, um es bisschen aufgepepter zu speichern.
ersteres geht mit Regions, siehe Himitsu's post
letzteres kannst per Canvas des Bitmap-Objektes machen.
den screenshot selbst kann man z.b. so:
Delphi-Quellcode:
procedure TAlarmDataList.GetScreenBitmap(r:TRect;bmp:TBitmap);
var FHdc:HDC;
begin
FHdc:=GetDC(0);
bmp.width:=r.right-r.left;
bmp.height:=r.Bottom-r.top;
bmp.pixelformat:=pf24Bit;
bitblt(bmp.canvas.handle,0,0,bmp.width,bmp.height,FHdc,r.left,r.top,srcCopy);
end;
HTH Frank
Hi, nein, ich will keine rahmen ich will ein wasserzeichen drüberblenden aber mit der screenshotmethode die du vorschlägst ignoeriert er beim srccopy einfach die alpha blending fenster komplett und tut so als seien die nicht auf dem bildschirm.
ich habe mal ein beispielprogramm geschrieben damit man sieht was ich meine. den ersten button drücken um ein alpha blend form aufzurufen, den zweiten um einen screenshot zu machen (mit deinem code). du wirst sehen, das alpha fenster taucht im screenshot nicht auf.
zur zeit löse ich das problem in meinem projekt indem ich den druck auf die drucken taste simuliere, das entstehende bitmap aus der zwischenablage lade und nachträglich beschneide. Das funktioniert für einzelne screenshots wunderbar, leider ist es aber zu langsam um damit an motion capture zu denken.
ich wüsste gern einen weg wie man entweder gleich alphablendiert kopiert oder nachträglich alphablendingmässig in ein canvas malt.
lieben Gruß