C#(Visual Studio 2015 Express for Desktop)を使用して
MDIフォームのアプリケーションを作成しています。
下記のようなイメージで、「スクリーンショット」ボタン押下時に
MDIの子フォームのスクリーンショットを取り、印刷したいです。
現在、以下のようなコードを書いています。
C#
1 private void button1_Click(object sender, EventArgs e) 2 { 3 // スクリーン・キャプチャする範囲を子ウィンドウにする 4 Rectangle rc; 5 rc = frm.Bounds; 6 7 // 子ウィンドウの座標をクライアント座標→スクリーン座標に変換 8 Rectangle rcSrc = frm.RectangleToScreen(rc); 9 10 // Bitmapオブジェクトにスクリーン・キャプチャ 11 Bitmap bmp = new Bitmap(frm.Size.Width, frm.Size.Height, PixelFormat.Format32bppArgb); 12 using (Graphics g = Graphics.FromImage(bmp)) 13 { 14 g.CopyFromScreen(rcSrc.X, rcSrc.Y, 0, 0, 15 frm.Size, CopyPixelOperation.SourceCopy); 16 } 17 18 // ビットマップ画像として保存して表示 19 string filePath = @"D:\screen.bmp"; 20 bmp.Save(filePath, ImageFormat.Bmp); 21 Process.Start(filePath); 22 }
このコードでは、子フォームの座標と領域の取得が正確にできず、
以下のようなイメージになってしまいます。
正確に、子フォームのみを抜き出したいのですが、
現在のコードでは何がまずいのか、
そして、座標と領域の指定方法についてなどの解決策を教えていただけないでしょうか?
具体的にどこをキャプチャしたいのか、赤枠とか付けてもらえますか?
回答2件
あなたの回答
tips
プレビュー