人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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()

●質問者: hokuto0127
●カテゴリ:コンピュータ
○ 状態 :キャンセル
└ 回答数 : 0/0件

回答がありません
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ