1

デバイス コンテキストに描画してきましたが、デバイス コンテキストの内容を画像に保存できるようにしたいと考えています。ビットマップから直接保存するのが最善の方法ではない場合、デバイス コンテキストからビットマップに移動するにはどうすればよいですか? 私はC#でこれをやろうとしています。

編集: SeriesOne のおかげで、彼のコードを変更して DC を BMP に保存することができました。これが私がそれをどのように変更したかです:

  Rectangle bmpRect = new Rectangle(0, 0, 640, 480);
                   // Create a bitmap
                   using (Bitmap bmp = new Bitmap(bmpRect.Width, bmpRect.Height))
                   {
                       Graphics gfx = Graphics.FromHdc(hdcScreen);
                       bmp.Save("C:\\MyBitmap.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
                       gfx.Dispose();
                   }
4

1 に答える 1

0
// Set the size/location of your bitmap rectangle.    
Rectangle bmpRect = new Rectangle(0, 0, 640, 480);
    // Create a bitmap
    using (Bitmap bmp = new Bitmap(bmpRect.Width, bmpRect.Height))
    {
        // Create a graphics context to draw to your bitmap.
        using (Graphics gfx = Graphics.FromImage(bmp))
        {
            //Do some cool drawing stuff here
            gfx.DrawEllipse(Pens.Red, bmpRect);
        }

        //and save it!
        bmp.Save(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\MyBitmap.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
    }

これは、ビットマップをファイルとして保存する場合に適しています。これはGDI +(主にソフトウェアレンダリング)を使用するため、静的ファイルにレンダリングしているため、パフォーマンスはそれほど問題になりません。

これを使用して、コントロールをレンダリングするときにオフスクリーン グラフィック バッファーを作成することもできます。この場合、save ステートメントを削除して、ビットマップ コンテンツをコントロール デバイス コンテキストに書き込むだけです。

于 2013-09-11T16:25:03.900 に答える