|
|||||
WEBページだけ(ウィンドウ枠を除く)を印刷する時などにWEBページ全体のビットマップが必要になります。 このサンプルはWEBページ全体(スクロールバー無し)をビットマップ保存するサンプル(VB.NET)です。 IE等でWEBページのイメージ印刷をすると途中で切れてしまう事がありますが、 ビットマップに保存してペイントツールで加工すれば綺麗に印刷する事が可能です。 関連ツールはこちらです。 WEBキャプチャ保存ツール(NonWebCapture) C#.NETのWEBページ・ビットマップ保存のサンプルはこちらです。 WEBページをビットマップ保存するサンプル(C#.NET) その他のサンプル(WEB関係/ビットマップ関係等)はこちらです。 サンプルソース(コード) ★フォーム(Form1.vb) Public Class Form1 ' ole32.dllのOleDrawを使用する(Const定義) Const DVASPECT_CONTENT As Integer = 1 ' ole32.dllのOleDrawを使用する(DllImport定義) <System.Runtime.InteropServices.DllImport("ole32.dll")> _ Public Shared Function OleDraw( _ ByVal pUnk As IntPtr, _ ByVal dwAspect As Integer, _ ByVal hdcDraw As IntPtr, _ ByRef lprcBounds As Rectangle) As Integer End Function ' フォームロード ' (準備)WebBrowserをフォームに貼り付けています ' (準備)PictureBoxをフォームに貼り付けています ' (準備)Buttonをフォームに貼り付けています Private Sub form1_Load( _ ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' WebBrowserを非表示にする Me.WebBrowser1.Visible = False ' WebBrowserのサイズを自由に変更出来るようにする Me.WebBrowser1.Dock = DockStyle.None ' WebBrowserのスクロールバーを無効にする Me.WebBrowser1.ScrollBarsEnabled = False ' WEBページのURLを指定 Me.WebBrowser1.Navigate("http://www.yahoo.co.jp") End Sub ' ボタンクリック時の処理 ' WEBページをJPEG形式で保存 Private Sub Button1_Click( _ ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' WebBrowser(WEBページ)のダウンロード完了まで待つ For i As Integer = 1 To 100 If WebBrowser1.IsBusy = False Then Exit For System.Threading.Thread.Sleep(1000) System.Windows.Forms.Application.DoEvents() Next ' WebBrowserにWEBページを全体表示(スクロールバー無し)するため、 ' WebBrowserのウィンドウサイズ(横)をWEBページの本文サイズにあわせる WebBrowser1.Width = WebBrowser1.Document.Body.ScrollRectangle.Width ' WebBrowserにWEBページを全体表示(スクロールバー無し)するため、 ' WebBrowserのウィンドウサイズ(縦)をWEBページの本文サイズにあわせる WebBrowser1.Height = WebBrowser1.Document.Body.ScrollRectangle.Height ' WebBrowserのサイズ(WEBページのサイズ)に合わせてBitmap生成 Dim bmp As New Bitmap(WebBrowser1.Width, WebBrowser1.Height) ' BitmapのGraphicsを取得 Dim gra As Graphics = Graphics.FromImage(bmp) ' BitmapのGraphicsのHdcを取得 Dim hdc As IntPtr = gra.GetHdc ' WebBrowser(WEBページ)のオブジェクト取得 Dim web As IntPtr = _ System.Runtime.InteropServices.Marshal.GetIUnknownForObject( _ WebBrowser1.ActiveXInstance) ' WebBrowser(WEBページ)のイメージをBitmapにコピー Dim rect As Rectangle = New Rectangle(0, 0, bmp.Width, bmp.Height) OleDraw(web, DVASPECT_CONTENT, hdc, rect) ' WebBrowser(WEBページ)のオブジェクト使用終了 System.Runtime.InteropServices.Marshal.Release(web) ' BitmapのGraphicsの使用終了 gra.Dispose() ' BitmapをJPEG形式で保存 bmp.Save(Now.ToString("yyyyMMddHHmmss") & "_WebPage.jpg", _ System.Drawing.Imaging.ImageFormat.Jpeg) ' BitmapをPictureBoxに表示 PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage PictureBox1.Image = bmp End Sub End Class |