Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Einen bestimmten Bereich des Bildschirm speichern (https://www.delphipraxis.net/84356-einen-bestimmten-bereich-des-bildschirm-speichern.html)

LingNeu 16. Jan 2007 12:59

Re: Einen bestimmten Bereich des Bildschirm speichern
 
Liste der Anhänge anzeigen (Anzahl: 3)
@marabu,
anbei der Code und die Bilder
Danke LingNeu

marabu 16. Jan 2007 13:10

Re: Einen bestimmten Bereich des Bildschirm speichern
 
Welchen Bildausschnitt willst du denn? Was soll auf diesem Ausschnitt zu sehen sein?

LingNeu 16. Jan 2007 13:15

Re: Einen bestimmten Bereich des Bildschirm speichern
 
@marabu,
am Besten wäre natürlich eine flexible Auswahl.
Am Anfang würde mir schon genügen, wenn ich z.B. den 1.Button und das 1.Editfenster auswählen könnte.
Ich möchte später die Anfangskoordinaten setzen (2 Edit) und dann noch die Grösse des Ausschnitts (2 Edit, Höhe+Breite)
Gruss
LingNeu

marabu 16. Jan 2007 13:25

Re: Einen bestimmten Bereich des Bildschirm speichern
 
Ich habe in deinem Code den Click-Handler von Button7 ersetzt:

Delphi-Quellcode:
procedure TForm1.Button7Click(Sender: TObject);
var
  bm: TBitmap;
  r: TRect;
begin
  bm := BitmapFromWinControl(self);
  UnionRect(r, Button1.BoundsRect, Edit1.BoundsRect);
  // InflateRect(r, 4, 4);
  with BitmapFromBitmap(bm, r) do
  begin
    SaveToFile('Demo.bmp');
    Free;
  end;
  bm.Free;
end;
Damit legst du im Code fest, dass der Ausschnitt Button1 und Edit1 enthalten soll. InflateRect() bläst den Ausschnitt um 4 Pixel rundherum auf - damit es nicht so gedrängt aussieht. Auch ein interaktiver Ansatz ist machbar, indem du auf Form-Ebene ein Fokus-Rechteck aufziehst und darüber den Ausschnitt definierst.

Freundliche Grüße

Blackheart 16. Jan 2007 13:27

Re: Einen bestimmten Bereich des Bildschirm speichern
 
Warum alles so kompliziert, mach einen screeshot vom gesammten Fenster
und kopiere deinen Ausschnitt.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  WinDC,MemDC  : hDC;
  Desktop : hBitmap;
  zx,zy,zx1,zy1      : integer;
  bmp    : TBitmap;
begin
  zx := 100;
  zy := 100;
  zx1:= 100;
  zy1:= 100;
  WinDC := GetDC (GetDeskTopWindow); {Bildschirmkontext holen}
  MemDC := CreateCompatibleDC (WinDC); {Kompatiblen Kontext erstellen}
  Desktop := CreateCompatibleBitmap (WinDC, zx, zy); {Bitmaphandle machen}
  SelectObject (MemDC, Desktop); {selektieren}
  BitBlt (MemDC, 0, 0, zx, zy, WinDC, zx1, zy1, SRCCOPY); {kopieren}
  DeleteDC (MemDC); {und wech damit}
  ReleaseDC (GetDeskTopWindow, WinDC); {diesen auch}
  bmp := TBitmap.Create;
  try
    bmp.Handle := Desktop;
    Image1.Picture.Bitmap.Assign(bmp);
  finally
    FreeAndNil(bmp);
  end;
end;

LingNeu 16. Jan 2007 13:44

Re: Einen bestimmten Bereich des Bildschirm speichern
 
@Blackheart
@marabu

da habt ihr mir sehr gut weitergeholfen - Besten Dank
Jetzt hab ich was zu tun :coder:

Gruss
LingNeu


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:43 Uhr.
Seite 2 von 2     12   

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