AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Screeshot aus einem bestimmten Bereich left-width und ...
Thema durchsuchen
Ansicht
Themen-Optionen

Screeshot aus einem bestimmten Bereich left-width und ...

Ein Thema von torud · begonnen am 17. Nov 2005 · letzter Beitrag vom 17. Nov 2005
Antwort Antwort
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#1

Screeshot aus einem bestimmten Bereich left-width und ...

  Alt 17. Nov 2005, 10:47
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:
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;
Ist sicher nur ne Kleinigkeit, oder?
Danke
Tom
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: Screeshot aus einem bestimmten Bereich left-width und ..

  Alt 17. Nov 2005, 11:05
Hm, obwohl du nur die Wissenden fragst antworte ich mal einfach.

Du kannst es recht einfach so machen
Delphi-Quellcode:
  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);
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).

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz