アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

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

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

A 回答 (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();
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/11/12 13:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!