VB.NETでWin32APIを使用したスクリーンショット撮影を実装しています。

Win32APIを選んだ理由としては、簡単に実装でき、境界線内のみを撮影してくれるというところです。
本題ですが、この方法でやると、ToolStripまで一緒に撮影されてしまったので、撮影イベントより先にToolStripを一度非表示するようにしたのですが、それでもToolStripが一緒に写ってしまいます。
なんとかツールバーを撮影時に含まないようにはできないのでしょうか。
以下、サンプルソースです。(コードが長すぎてイベント発生部分しか入りませんでした)

Public Function CaptureControl(ByVal ctrl As Control) As Bitmap
Dim g As Graphics = ctrl.CreateGraphics()
Dim img As New Bitmap(ctrl.ClientRectangle.Width, _
ctrl.ClientRectangle.Height, g)
Dim memg As Graphics = Graphics.FromImage(img)
Dim dc1 As IntPtr = g.GetHdc()
Dim dc2 As IntPtr = memg.GetHdc()
BitBlt(dc2, 0, 0, img.Width, img.Height, dc1, 0, 0, SRCCOPY)
g.ReleaseHdc(dc1)
memg.ReleaseHdc(dc2)
memg.Dispose()
g.Dispose()
Return img
End Function

ToolStrip1.Visible = False
Dim bmp As Bitmap = CaptureControl(Me)
Dim sfd As New SaveFileDialog()
sfd.FileName = "新しいファイル"
sfd.Filter = "すべてのファイル(*.*)|*.*"
sfd.RestoreDirectory = True
If sfd.ShowDialog() = DialogResult.OK Then
bmp.Save(sfd.FileName)
End If
bmp.Dispose()

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/12/16 17:45:03

回答0件)

回答はまだありません

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません