AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Teil einer Webbrowser-Ansicht als JPG speichern

Ein Thema von idefix2 · begonnen am 8. Mai 2016 · letzter Beitrag vom 4. Jul 2016
 
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
510 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Teil einer Webbrowser-Ansicht als JPG speichern

  Alt 25. Mai 2016, 12:06
Hallo,

leider gibt es jetzt doch noch ein Problem.
Ich war der Meinung, dass der Canvas ein "virtuelles" Zeichenbrett ist, auf dem die Komponente dargestellt wird. Offensichtlich ist dem aber nicht so, sondern der Canvas entspricht dem, was am Bildschirm aktuell dargestellt wird. Wird ein Teil meines Formlars von einem anderen Programm überdeckt, dann kopiert BitBlt nicht den "virtuellen" Inhalt meines Formulars, sondern das, was gerade am Bildschirm an der Stelle im Vordergrund angezeigt wird.

Gibt es eine Möglichkeit, auf das Bild zuzugreifen, das meine Form anzeigen würde, wenn sie im Vordergrund wäre? Wenn nicht, ist das sehr lästig, weil dann muss das Programm ja ständig im Vordergrund laufen.
Hmm also bei mir funktioniert es auch wenn ein Fenster drüber liegt, nur wenn man das Fenster explizit minimiert geht es nicht mehr.

Hier mein Testcode:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  LBitmap : TBitmap;
begin
  LBitmap := TBitmap.Create();

  LBitmap.Width := WebBrowser1.Width;
  LBitmap.Height := WebBrowser1.Height;

  bitblt(LBitmap.canvas.Handle, 0, 0, Width,Height, self.canvas.handle, WebBrowser1.Left, WebBrowser1.Top, SRCCOPY);
  LBitmap.SaveToFile('./test.bmp');
  LBitmap.Free;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
  webbrowser1.Navigate('http://google.de/?q=' + IntToStr(Random(500)));
end;
Sind halt 2 Timer, der erste ruft BitBlt auf und speichert das Bitmap, der zweite ruft Googlesuchen mit Zahlen zwischen 0 und 500 auf um Veränderungen beim abspeichern sehen zu können.
Also wie gesagt, auch wenn 200 Fenster über dem TWebBrowser liegen funktioniert es ohne Probleme.

Freundliche Grüsse

Edit: Ansonsten könntest du versuchen das Fenster einfach ganz ausserhalb des Sichtbaren Bereichs zu verschieben? Also Quasi Form.Left := -1000; Das klappt bei mir nämlich auch.
Milos

Geändert von milos (25. Mai 2016 um 12:11 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 12:05 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