1

私は C# を使用しており、フォームにいくつかのポリゴンを描画してから、グラフィックをビットマップに保存したいと考えています。

この質問の回答に続いて、 Form クラスにメソッドを作成しました。

  private void draw_pol()
  {
      Graphics d = this.CreateGraphics();

      // drawing stuff

      Bitmap bmp = new Bitmap(this.Width, this.Height, d);
      bmp.Save("image.bmp");
  }

このようにして、フォームはグラフィックを正しく表示し、「image.bmp」という名前のビットマップ ファイルが作成されますが、そのファイルは白いイメージです。

bmp ファイルに画像が表示されないのはなぜですか? 私が間違っていることは何ですか?

どうもありがとうございました。

4

3 に答える 3

2

Graphicsインスタンスは 1 つのでのみ動作しますBitmap。保存したいものか、フォーム上のものです。

たとえば、これを実行して、描画されたビットマップをフォームにレンダリングし、後で保存できます。

private void DrawOnBitmap()
{
    using (var bitmap = new Bitmap(this.Width, this.Height))
    {
        using (var bitmapGraphics = Graphics.FromImage(bitmap))
        {
            // Draw on the bitmap
            var pen = new Pen(Color.Red);
            var rect = new Rectangle(20, 20, 100, 100);
            bitmapGraphics.DrawRectangle(pen, rect);

            // Display the bitmap on the form
            using (var formGraphics = this.CreateGraphics())
            {
                formGraphics.DrawImage(bitmap, new Point(0, 0));
            }

            // Save the bitmap
            bitmap.Save("image.bmp");
        }
    }
}   
于 2012-11-29T10:24:40.760 に答える
2

ビットマップに渡すグラフィック パラメータは、ビットマップの解像度を指定するためにのみ使用されます。ビットマップに描画することは決してありません。

MSDNから:

このメソッドが作成する新しい Bitmap は、それぞれ g の DpiX プロパティと DpiY プロパティから水平解像度と垂直解像度を取得します。

代わりに、使用できるオブジェクトGraphics.FromImage()を取得するために使用します。Graphicsまた、塗装後Disposeの物をご用意ください。これは、ステートメント Graphicsの理想的な使用法です。using

Bitmap bmp = new Bitmap(this.Width, this.Height);
using (Graphics g = Graphics.FromImage(bmp))
{
    //paint stuff
}
bmp.Save(yourFile);

これもフォームに描画する必要がある場合は、作成したビットマップを簡単に描画できます。

Graphics g = this.CreateGraphics();
g.DrawImage(bmp, 0, 0);
于 2012-11-29T10:17:02.367 に答える
1

ビットマップを表すグラフィックスオブジェクトが必要なので、画像に描画できます。次のようにします。

  • ビットマップ オブジェクトを作成する
  • Graphics.FromImage メソッドを使用してグラフィックス オブジェクトを作成する
  • ビットマップ オブジェクトを引数としてグラフィックス オブジェクトに渡す

    Bitmap bmp = new Bitmap(this.Width, this.Height, d);
              bmp.Save("image.bmp");//for your need
         Graphics d=Graphics.FromImage(bmp);
    
于 2012-11-29T10:16:06.183 に答える