AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Image aus Image schneiden
Thema durchsuchen
Ansicht
Themen-Optionen

Image aus Image schneiden

Ein Thema von Stread · begonnen am 11. Jul 2011 · letzter Beitrag vom 11. Jul 2011
 
Stread

Registriert seit: 25. Jun 2011
23 Beiträge
 
Delphi XE Architect
 
#1

Image aus Image schneiden

  Alt 11. Jul 2011, 14:41
Hi, ich möchte gerne einen Screenshot nur von einem Fenster machen.
Ich drücke auf den Button lasse die Maustaste gedrückt und lasse sie auf einem anderen Fenster los.
Die Anwendung nimmt den Screenshot vom ganzen Bildschirm und stellt danach das Fenster frei.
Meine Methode funktioniert auch ganz gut, in den beiden Images wird das richtige Bild angezeigt, allerdings kann ich es nur 1x ausführen. Beim 2ten mal gibt es Fehler.
Das gleiche Problem gibt es wenn ich es einmal ausgeführt habe und dann die ganze Anwendung schließen will.
Scheint ein größerer Fehler zu sein?
Fehler: http://s7.directupload.net/file/d/2582/cw6v8mp2_jpg.htm

Delphi-Quellcode:
//Fertigt einen Screenshot vom Desktop an
procedure MakeScreenShot(const ATarget: TBitmap);
var
   DesktopDC: HDC;
begin
   DesktopDC := CreateDC('DISPLAY', nil, nil, nil);
   try
     ATarget.PixelFormat := pfDevice;
     ATarget.Width := Screen.Width;
     ATarget.Height := Screen.Height;

     BitBlt(ATarget.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, DesktopDC, 0, 0, SRCCOPY);
   finally
     DeleteDC(DesktopDC);
   end;
end;

procedure TForm1.Button9MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var p:TWindowPlacement ;
h :HWND;
SourceBitmap : TBitmap;
TargetBitmap : TBitmap;
Cut : TRect;
begin
  h:=WindowFromPoint(Mouse.CursorPos);
   p.Length:=SizeOf(TWindowPlacement);
   GetWindowPlacement(h,@p);

MakeScreenShot(Image1.Picture.Bitmap);
Image1.Repaint;

 SourceBitmap:= TBitmap.Create;
 TargetBitmap:= TBitmap.Create;
 SourceBitmap:=Image1.Picture.Bitmap;

   Cut.Left := p.rcNormalPosition.Left;
   Cut.Top := p.rcNormalPosition.Top;
   Cut.Right := p.rcNormalPosition.Right;
   Cut.Bottom := p.rcNormalPosition.Bottom;

  try
   TargetBitmap.Width := Cut.Right - Cut.Left;
   TargetBitmap.Height := Cut.Bottom - Cut.Top;

   BitBlt(TargetBitmap.Canvas.Handle, 0, 0, Cut.Right, Cut.Bottom, SourceBitmap.Canvas.Handle, Cut.Left, Cut.Top, SRCCOPY);
   SourceBitmap.Canvas.Refresh;
   Image2.Picture.Bitmap:=TargetBitmap;
   Image2.Repaint;
   JPEG;
    finally
     SourceBitmap.Free;
     TargetBitmap.Free;
  end;

end;
Soll:http://s1.directupload.net/file/d/2582/e2aoyt2m_jpg.htm
Angehängte Grafiken
Dateityp: jpeg fehler.jpeg (192,5 KB, 10x aufgerufen)

Geändert von Stread (11. Jul 2011 um 17:17 Uhr)
  Mit Zitat antworten Zitat
 


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 13:49 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 by Thomas Breitkreuz