2012-01-05 29 views
4

私は2つのパネルを持つフォームを持っています。私はPanel2の内容をイメージとして保存しようとしています。これを行うためにスクリーンキャプチャの使用について話したスレッドを見ましたが、スレッドをもう見つけられません。 DrawToBitMapメソッドの使い方についても読んでいますが、これはVisual Studio 2005の情報ですが、これが最新のものか適切なものかはわかりません。では、Panel2を画像として、好ましくはjpgとして保存するにはどうすればよいですか?パネルを自分のフォームに画像として保存するにはどうしたらいいですか?

更新: 私はDrawToBitMapのために以下のコードを実装しましたが、私のpanel2の半分(違いがあれば左の半分)を節約します。 私のパネル2の半分が保存されているので、幅の呼び出しに '2'を掛けて完全なフォームを保存しました。奇妙なものの種類とパネル2の幅はフルパネルではなく、その半分でなければならないので私に意味をなさない?

//multiplies the width of panel2 call by 2 to make it save the full panel 
Bitmap bmp = new Bitmap(splitContainer1.Panel2.Width * 2, splitContainer1.Panel2.Height); 
splitContainer1.Panel2.DrawToBitmap(bmp, splitContainer1.Panel2.Bounds); 
bmp.Save(@"C:\Test.bmp"); 
+0

チェックアウトこのスレッドを - http://stackoverflow.com/questions/2219985/how-to-save-win-form- as-image-pdf – adatapost

答えて

7

Control.DrawToBitMapは、引き続き.Net 4.ではサポートされています。上記のリンクから

  • DrawToBitmapメソッドは、ActiveXコントロールのためにサポートされていません。 は、OnPrintイベントを無効にして、 が必要な場合はカスタム印刷ロジックを提供できます。

DrawToBitmapメソッドは、次の制限があります。

  • アンArgumentExceptionが、大きなビットマップのためにスローされる可能性があります。最大サイズは で、マシンによって異なります。
  • DrawToBitmapは、Windows XP Tablet PC Edition 2005オペレーティングシステムのインクコントロールをサポートしていません。
  • のVisibleプロパティがTextBoxにfalseに設定されている場合、DrawToBitmapは子TextBoxを描画しません。
  • コンテナ内のコントロールは、逆の順序でレンダリングされます。
  • RichTextBoxではDrawToBitmapが完全に機能していません。ビットマップの 境界のみが描画されます。

編集を追加しました例と画像:

Bitmap bmp = new Bitmap(panel1.Width,panel1.Height); 
panel1.DrawToBitmap(bmp, panel1.Bounds); 
bmp.Save(@"C:\Temp\Test.bmp"); 

+0

DrawToBitMapに非常に多くの制限がある場合は、そうでなければお勧めするものがありますか? –

+0

私はあなたのコードを実装し、私のpanel2の半分を印刷しました...なぜそれが半分しかなかったのか分かりませんか? –

+0

私はpanel2.widthに2を掛けてパネル全体を節約しなければならなかったが、2を掛けずに半分しか与えなかった...これは奇妙に思える。 –

関連する問題