![]() |
Bild vom TWebbrowser erstellen
Guten Morgen,
gibt es eine Möglichkeit ein Bild vom TWebbrowser zuerstellen, also nur die Komponente an sich mit Inhalt? Grüße Steven |
AW: Bild vom TWebbrowser erstellen
Vielleicht
![]() |
AW: Bild vom TWebbrowser erstellen
Delphi-Quellcode:
Keine Ahnung, wo ich das wann auch immer gefunden habe.
{ Bildschirmfotos machen }
function CaptureScreenRect( ARect: TRect ): TBitmap; var ScreenDC: HDC; begin Result := TBitmap.Create; with Result, ARect do begin Width := Right - Left; Height := Bottom - Top; ScreenDC := GetDC( 0 ); try BitBlt( Canvas.Handle, 0, 0, Width, Height, ScreenDC, Left, Top, SRCCOPY ); finally ReleaseDC( 0, ScreenDC ); end; end; end; { Bildschirmfotos machen } function CaptureScreen: TBitmap; begin with Screen do Result := CaptureScreenRect(Rect( 0, 0, Width, Height)); end; { Bildschirmfoto eines Controls machen. } function CaptureClientImage( Control: TControl ): TBitmap; begin with Control, Control.ClientOrigin do Result := CaptureScreenRect( Bounds( X, Y, ClientWidth, ClientHeight )); end; { Bildschirmfoto eines Controls machen. } function CaptureControlImage( Control: TControl ): TBitmap; begin with Control do if Parent = nil then Result := CaptureScreenRect( Bounds( Left, Top, Width, Height )) else with Parent.ClientToScreen( Point( Left, Top )) do Result := CaptureScreenRect( Bounds( X, Y, Width, Height )); end; { Bildschirmfoto eines Controls machen. } function CaptureWindowImage(Wnd: HWND): TBitmap; var R: TRect; begin GetWindowRect(Wnd, R); Result := CaptureScreenRect(R); end; |
AW: Bild vom TWebbrowser erstellen
Hallo DelphiNarium
das funktioniert in D10.3 nicht: In CaptureScreenRect werden in deinem Code nicht width und height der Bitmap gesetzt, sondern von ARect. Die Bitmap behält dadurch Grösse 0x0. (Wieder einmal ein Ausgangspunkt zur Diskussion "with Ja oder Nein" ;-).) Wenn du stattdessen with ARect, Result do begin schreibst, dann klappt's:
Delphi-Quellcode:
function CaptureScreenRect( ARect: TRect ): TBitmap;
var ScreenDC: HDC; begin Result := TBitmap.Create; with ARect, Result do begin Width := Right - Left; Height := Bottom - Top; Aber: - Wenn du das Fenster über den Bildschirmrand hinaus schiebst, dann wird nur der sichtbare Bereich fotografiert. - Wenn das Fenster durch ein anderes Fenster ganz oder teilweise überdeckt ist, dann klappt dein Ansatz auch nicht. Kurz: Ich würde diesen Weg nicht gehen. |
AW: Bild vom TWebbrowser erstellen
Bei dem von mir geposteten Code handelt es sich um ein Fundstück aus dem Internet, von dem ich leider nicht mehr weiß, wo es her ist.
In eigenem Code von mir wirst Du kein with finden, das ist in etwa so wie würfeln oder russisch Roulette, es kann gut gehen, muss es aber nicht. Eventuell könnten die Routinen daher sein: ![]() Oder daher? ![]() Keine Ahnung, wer da jetzt nun der Urheber ist und wer da was von wo übernommen / abgekupfert hat. Tante ![]() |
AW: Bild vom TWebbrowser erstellen
Wenn du nicht den Weg via IHTMLImgElement; IHTMLElementRender (#2) und nicht die ganze Webseite benötigst (#7), sondern nur ein Bild vom Control (also nur von dem Teil der Webseite, welcher im Control sichtbar ist) machen willst, dann schlage ich mal vor:
Delphi-Quellcode:
procedure ScreenShot( Handle : HWND; BitMap: TBitMap);
var dc : HDC; rect : TRect; begin GetWindowRect( Handle, rect ); BitMap.SetSize( rect.Width, rect.Height ); dc := GetDC( Handle ); if (dc = 0) then exit; BitBlt(Bitmap.canvas.Handle, 0, 0, rect.Width, rect.height, dc, 0, 0, SRCCOPY); ReleaseDC( Handle, dc ); end; Aufruf:
Delphi-Quellcode:
hbit := TBitMap.Create;
try ScreenShot( webbrowser1.Handle, hbit ); hbit.SaveToFile( ... ); // zum Beispiel in ein File speichern finally hbit.Free; end; |
AW: Bild vom TWebbrowser erstellen
Liste der Anhänge anzeigen (Anzahl: 1)
Hmm..
ein bischen Google... ein bischen testen und bearbeiten... .. und schon bekomme ich vom TWebBrowser einen kompletten Webseiten ScreenShot. (Was von hier ausgeborgt und überarbeitet: ![]() Erstellt mit D6) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 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