私はGraphicsオブジェクトとPanelを持っています。 Graphicsオブジェクトは、パネルからHandlerを使用してインスタンス化されます。次に、ペイントアクションでパネルが更新されます。ペイントアクションの内部では、Graphicsオブジェクトがペイントに使用されます。ときどきコードを使って、Invalidate()を使ってパネルを更新します。パネルをビットマップに保存する#Winforms
GraphicsオブジェクトのコンテンツまたはPanelのコンテンツをファイルに保存します。私がそれをしようとするたびに、画像ファイルが作成されますが、空白です。ここ
は、コードの一部抜粋である:
I、クラス変数としてグラフィックオブジェクトを開始:
Graphics GD_LD;
そしてIがパネルハンドラを使用してオブジェクトをインスタンス化するために以下を使用コンストラクタで:
GD_LD = Graphics.FromHwnd(panelDrawLD.Handle);
次に、私はグラフィックスオブジェクトを使用してすべての図面を作成していましたが、パネルのペイントアクションで使用される描画関数を持っています。
private void panelDrawLD_Paint(object sender, PaintEventArgs e)
{
..... some code ....
//Code example
GD_LD.FillPolygon(blackBrush, getPoints(min, sizeGP, scaleX, scaleY));
GD_LD.FillPolygon(blackBrush, getPoints(max, sizeGP, scaleX, scaleY));
..... some code ....
}
上記は、パネルに描画して常に図面と一緒に保持するのに適しています。
Bitmap I_LD = new Bitmap(panelDrawLD.Size.Width, panelDrawLD.Size.Height);
panelDrawLD.DrawToBitmap(I_LD, new Rectangle(0,0, panelDrawLD.Size.Width, panelDrawLD.Size.Height));
I_LD.Save(tempPath + "I_LD.bmp",ImageFormat.Bmp);
イメージファイルが作成され
が、コンテンツなし:
問題は、画像ファイルへのパネルを保存しようとしたときです。ちょうど空白。
私はこのテーマについていくつかのスレッドを見ましたが、自分の状況に適応できませんでした。
私は間違っていますか?可能な解決策は何ですか?
は 'Graphics.FromHwnd'はほとんど常に行うには間違ったことです。あなたのペイントイベントでは、 'DG_LD'ではなく' examples'を使っていなければなりません。 –
[パネル上の図形をバイナリとして保存する方法](https://stackoverflow.com/a/40575797/3110834) –
@RezaAghaeiリンクのおかげで、そこには素晴らしいマニュアルがあります! – Nuno