Rubrik: HTML/Internet/Netzwerk · WebBrowser | VB-Versionen: VB2005, VB2008 | 13.10.08 |
Mit nachfolgender Funktion lässt sich ein Snapshot einer Webseite erstellen, die aktuell im WebBrowser-Control angezeigt wird.
Imports System.Drawing
''' <summary>
''' Erstellt einen Snapshot vom Inhalt der gerade im
''' WebBrowser-Control angezeigten Webseite
''' </summary>
''' <param name="wb">WebBrowser-Control</param>
''' <param name="bCutScrollbars">optional. True, wenn Scrollbars
''' ausgeblendet werden sollen</param>
''' <returns>Bitmap-Objekt mit dem Inhalt der Webseite als Bild</returns>
Private Function wbSnapshot(ByVal wb As WebBrowser, _
Optional ByVal bCutScrollbars As Boolean = True) As Bitmap
Dim oBitmap As Bitmap
If bCutScrollbars Then
' Snapshot ohne WebBrowser-Scrollbars
With wb.Document.Body.ClientRectangle
oBitmap = New Bitmap(.Width, .Height)
End With
Else
' Snapshot mit WebBrowser-Scrollbars
oBitmap = New Bitmap(wb.Width, wb.Height)
End If
' Inhalt des WebBrowser-Controls in das Bitmap-Objekt "zeichnen"
wb.DrawToBitmap(oBitmap, New Rectangle(0, 0, oBitmap.Width, oBitmap.Height))
' Bitmap-Objekt zurückgeben
Return (oBitmap)
End Function
Anwendungsbeispiel:
Platzieren Sie auf die Form ein WebBrowser-Control, eine TextBox zur Einagbe der URL, sowie einen Button und ein PictureBox-Control. Die PictureBox dient zum Anzeigen des Snapshots der
aktuellen Webseite.
Public Class Form1
' Timer-Objekt
Dim WithEvents oTimer As New Timer
Private Sub TextBox1_KeyPress(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If Asc(e.KeyChar) = 13 Then
e.Handled = True
' Buttons deaktivieren, bis Seite vollständig geladen wurde
Button1.Enabled = False
' Bildfeld löschen
PictureBox1.Image = Nothing
' URL laden und anzeigen
WebBrowser1.Navigate(TextBox1.Text)
Me.Cursor = Cursors.WaitCursor
oTimer.Interval = 100
oTimer.Start()
End If
End Sub
Private Sub oTimer_Tick(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles oTimer.Tick
' Prüfen, ob Webseite vollständig geladen wurde
With WebBrowser1
If .ReadyState = WebBrowserReadyState.Complete Then
oTimer.Stop()
Me.Cursor = Cursors.Default
Button1.Enabled = True
End If
End With
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
' Snapshort erstellen
PictureBox1.Image = wbSnapshot(WebBrowser1)
End Sub
End Class