Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Screenshot erstellen und speichern (https://www.delphipraxis.net/75883-screenshot-erstellen-und-speichern.html)

Andreas13 10. Okt 2022 18:37

AW: Screenshot erstellen und speichern
 
Inzwischen habe ich alles andere auskommentiert und lediglich die folgenden zwei Units in der Uses-Liste belassen:
Delphi-Quellcode:
Uses
  Vcl.Graphics, Winapi.Windows;
Trotzdem kommt die Fehlermeldung: [dcc32 Fehler]: E2003 Undeklarierter Bezeichner: 'SetSize' :(

Andreas13 10. Okt 2022 18:48

AW: Screenshot erstellen und speichern
 
Könnte bitte jemand folgenden Test mit XE5 kompilieren? :-D
Delphi-Quellcode:
program DesktopScreenShot_Test_1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  Vcl.Graphics,
  Winapi.Windows;


procedure DesktopScreenShot(DestBitmap: TBitmap; SourceRect: TRect);
// https://www.delphipraxis.net/75883-screenshot-erstellen-und-speichern-2.html
// #12: von Uwe Raabe
// 2022-10-10, um 11:43 Uhr

var
  DC: HDC;
  wnd: HWND;
begin
  wnd := GetDesktopWindow;
  DC := GetDC(wnd);
  try
    DestBitmap.SetSize(SourceRect.Width, SourceRect.Height);
    BitBlt(DestBitmap.Canvas.Handle, 0, 0, SourceRect.Width, SourceRect.Height, DC, SourceRect.Left, SourceRect.Top, SRCCOPY) ;
  finally
    ReleaseDC(wnd, DC);
  end;
end;
 
begin
  try

  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
Mein Compiler weigert sich hartnäckig. :cry:

Danke! Grüße, Andreas

Keldorn 10. Okt 2022 19:03

AW: Screenshot erstellen und speichern
 
Hallo

dreh mal die Reihenfolge der units um, zuerst windows und dann graphics.
Tbitmap ist in beiden units definiert

oder du schreibst
Delphi-Quellcode:
procedure DesktopScreenShot(DestBitmap: VCL.Graphics.TBitmap
also VCL.Graphics. ...

Andreas13 10. Okt 2022 19:21

AW: Screenshot erstellen und speichern
 
Danke Keldorn! :thumb:
Mir sind qualifizierte Bezeichner sympathischer:
Delphi-Quellcode:
procedure DesktopScreenShot(DestBitmap: VCL.Graphics.TBitmap; SourceRect: TRect);
, denn die Umkehrung der Reihenfolgde der Units könnte u.U. in anderen Routinen für Chaos sorgen!

Danke Euch allen & Grüße :-D
Andreas

himitsu 10. Okt 2022 19:56

AW: Screenshot erstellen und speichern
 
Kennst du Strg+Linksklick auf "dein" TBitmap?

Zitat:

Delphi-Quellcode:
//unit Winapi.Windows;

{ Bitmap Header Definition }
  PBitmap = ^TBitmap;
  {$EXTERNALSYM tagBITMAP}
  tagBITMAP = record
    bmType: Longint;
    bmWidth: Longint;
    bmHeight: Longint;
    bmWidthBytes: Longint;
    bmPlanes: Word;
    bmBitsPixel: Word;
    bmBits: Pointer;
  end;
  TBitmap = tagBITMAP;
  {$EXTERNALSYM TBitmap}
  BITMAP = tagBITMAP;
  {$EXTERNALSYM BITMAP}

Wer/wann ist, um Himmels Willen, da denn auf diese saudämliche strunzdoofe Idee gekommen?

Warum ausgerechnet HIER dieser "Pascalname", in der WinAPI,
und wenn, warum dann nicht TBitmapHeader.


Ist ja fast so ein Schwachsinn, wie das mit den beiden TMonitor. :wall:


Lösung 1:
Delphi-Quellcode:
uses
  Winapi.Windows;
  System.SysUtils,
  Vcl.Graphics, // Windows vor Graphics
Lösung 2:
Delphi-Quellcode:
procedure DesktopScreenShot(DestBitmap: Vcl.Graphics.TBitmap; SourceRect: TRect);

himitsu 10. Okt 2022 20:17

AW: Screenshot erstellen und speichern
 
Es ist einfach nur trauchig.

https://quality.embarcadero.com/browse/RSP-21364


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:21 Uhr.
Seite 3 von 3     123   

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