こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C#でフォームのコピーをしたい

最近C#を始めたのですが、フォームをコピーする際に

Bitmap myBmp = new Bitmap(this.Width, this.Height);
this.DrawToBitmap(myBmp, new Rectangle(0, 0, this.Width, this.Height));
Clipboard.SetDataObject(myBmp, false);

といった風にコピーをしていたのですが、これではフォーム全体がコピーされ、縁ができてしまいます。範囲指定してフォームコピーをする方法はないでしょうか。

投稿日時 - 2009-11-11 15:14:59

QNo.5439510

困ってます

質問者が選んだベストアンサー

 こんばんは。

 クライアント領域のスクリーンショットを取りたいのでしょうか。
 DrawToBitmap()を呼ぶとフォームの外枠も含まれるので、もう一つ用意しておいたビットマップに向かって、外枠の分だけずらして転送します。
 後はクリップボードに向かって送ってあげれば、外枠を抜いたスクリーンショットが取れているはずです。
 以下参考程度に。

//フォームからスクリーンショットを撮る 
Bitmap myBmp = new Bitmap(this.Width, this.Height);
this.DrawToBitmap(myBmp, new Rectangle(0, 0, this.Width, this.Height));

//外枠を除外されたスクリーンショット
Bitmap sendBmp = new Bitmap(this.ClientSize.Width, this.ClientSize.Height);

//外枠を除外して転送
Graphics gfx = Graphics.FromImage(sendBmp);
gfx.DrawImage(myBmp, this.PointToClient(this.Location));

//クリップボードに送る
Clipboard.SetDataObject(sendBmp, true);

//後始末
sendBmp.Dispose();
myBmp.Dispose();

投稿日時 - 2009-11-12 00:01:45

お礼

的確な回答ありがとうございます。
困っていた問題が解決しました。
もっと精進していきたいと思います。

投稿日時 - 2009-11-12 13:58:08

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問