【问题标题】:How to convert Graphics into Image or Bitmap?如何将图形转换为图像或位图?
【发布时间】:2012-10-14 12:48:49
【问题描述】:

如何将图形转换为图像或位图?

我有这段代码,它成功地将我的图像裁剪到图片框中,但是当我尝试将其保存到数据库中时......它是空的。

Bitmap sourceBitmap = new Bitmap(pctImage.Image, pctImage.Width, pctImage.Height);
Graphics g = frmAdd.pctImage.CreateGraphics();

Rectangle rectCropArea;
rectCropArea = new Rectangle(50, 3, 230, 240);

g.DrawImage(sourceBitmap, new Rectangle(0, 0, frmAdd.pctImage.Width, frmAdd.pctImage.Height), rectCropArea, GraphicsUnit.Pixel);
sourceBitmap.Dispose();

我该怎么处理这个?谢谢。

【问题讨论】:

  • 你没有显示你的代码是如何保存到数据库的。
  • 不要在创建位图后立即处理它。首先保存它,然后处理它。当您使用 using 语句时,这很自然。

标签: c# bitmap


【解决方案1】:

像这样:

  Bitmap bmp = new Bitmap(100,100,graphics);

【讨论】:

  • 没有。阅读文档 - 不会将像素复制到位图中。
【解决方案2】:

使用这样的结构:

using (Bitmap bitmap = new Bitmap(rectangle.Width, rectangle.Height))
        {
            using (Graphics graphics = Graphics.FromImage(bitmap))
            {
               //draw image..
            }
            return bitmap;
        }

【讨论】:

  • 返回已处理的位图是一个非常糟糕的主意。
  • 根据 Hans 的评论,正确的做法是将使用 bitmapall 代码放入 using .. bitmap 中。因此,对于提出的问题,这意味着执行save,现在它说return bitmap。 (并且不要返回该位图,因为它在using 上下文结束时被释放。)
猜你喜欢
  • 2019-09-29
  • 2012-03-11
  • 2014-01-26
  • 2015-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多