Hallo,
stehe vor folgender Fragestellung.
Ich möchte von einer Karte mit Polyline (ca. 2000 Punkt) ein JPEG mit höherer Auflösung erzeugen. Screen-Shot vom Inhalt Webbrowser war schnell erstellt. Nun kommt die weitere Aufgabe:Setzte Webbrowser auf z.B. 2048x2048 Bildpunkte, Polyline-Steckenzug zentrieren, Screen-Shot, Karte wieder auf ursprüngliche Größe und neu zenrieren.
Mein derzeitiger Code:
Delphi-Quellcode:
procedure TFMain.TBMapCopyToJPegClick(Sender: TObject);
var t1,t2 : DWord;
begin
// Teil 1
WebBrowserMap.Align := alNone;
WebBrowserMap.Width := 2048;
WebBrowserMap.Height := 2048;
MapCenter;
WebBrowserMap.Update;
t1 := timeGettime;
repeat
t2 := timeGettime;
Application.ProcessMessages;
until( WebBrowserMap.Busy=False )or( (t2-t1)>2000 );
// Teil 2
WebBrowserScreenShot( WebBrowserMap,'D:\Test.jpg' );
WebBrowserMap.Align := alClient;
MapCenter;
end;
Ergebnis: Polyline auf grauem Hintergrund 2048x2048 Pixel. Verschiedene Versuche scheitern, nie ist die Karte komplett mit Polyline drauf. Trenne ich das ganze auf zwei Buttons, Button1 -> Teil 1, Button2 -> Teil 2 ist alles o.k.
Eine Möglichkeit wäre eine bestimmte Zeit zu warten, aus meiner Sicht unsauber, hängt zu startk von Hardware und Internet-Verbindung ab. Gibt es eine Möglichkeit zu erfassen, wann die Seite über den Webbrowser komplett geladen ist
und der Inhalt komplett dargestellt ist?
Gruß DelphiFan2008