• ベストアンサー

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

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

  • ベストアンサー
回答No.1

 こんばんは。  クライアント領域のスクリーンショットを取りたいのでしょうか。  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();

tynxub
質問者

お礼

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

関連するQ&A