![]() |
Screeshot aus einem bestimmten Bereich left-width und ...
Hallo Wissende!
Ich möchte/muss einen Screenshot aus einem Teilbereich meiner Anwendung schiessen. Es ist ein Panel, von dem ich ein Bild benötige und ich weiss auch direkt welcher Bereich von dort benötigt wird. Folgenden Code habe ich schon gefunden, um meinen Wunsch zu Realisieren. In diesem Code wird vom Formular der Screenshot gemacht. Ich ersetze also einfach nur das Handle durch das auf´s Panel!? Die eigentliche Frage lautet aber, wie kann ich in dieser Routine sagen, dass ich den Screenshot von left=5 bis panel.width-5 und top=5 bis height-5 brauche???
Delphi-Quellcode:
Ist sicher nur ne Kleinigkeit, oder?
var
b1,b2:tbitmap; j:tjpegimage; begin b1:=tbitmap.Create; b1.width:=self.Width-pan_left.width; b1.height:=self.Height; b1.canvas.handle:=GetWindowDC(Form1.Handle); // Desktop erfassen b2:=tbitmap.create; b2.width:=b1.width; b2.height:=b1.height; b2.Canvas.CopyRect(screen.desktoprect,b1.Canvas,screen.desktoprect); j:=tjpegimage.create; j.assign(b2); j.savetofile('C:\Screen.jpg'); j.free; end; |
Re: Screeshot aus einem bestimmten Bereich left-width und ..
Hm, obwohl du nur die Wissenden fragst antworte ich mal einfach.
Du kannst es recht einfach so machen
Delphi-Quellcode:
Na ja, speichern und umwandeln in JPEG bekommst du ja selbst hin. Ansonsten musst du für BitBlt immer ein Canvas-Handle verwenden, also ist hier Form1.Canvas.Handle wichtig und richtig, Panel1.Handle würde dir nichts bringen (gibt ja Canvas von dem kopiert würde).
bitmap := TBitmap.Create;
bitmap.Width := destWidth; // Breite die du kopieren möchtest bitmap.Height := destHeight; // Höhe die du kopieren möchtest BitBlt(bitmap.Canvas.Handle, 0, 0, destWidth, destHeight, Form1.Canvas.Handle, (self.Panel1.Left + X_Offset), (self.Panel1.Top + YOffset), SRCCOPY); Gruß Der Unwissende |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz