C# 图片处理 代码 GDI+一般性错误 参数无效

在C#中使用Graphic 编程,应该说是C#编程进入了一个较高的层次,并且这里面会有许多令人惊心动魄的内容。无论是所实现的绚丽效果或者是遇到的程序异常,所付出的都是杀死一堆脑细胞是的绝对代价。看到成果自然可喜可贺,如若遇到程序异常唯有稳住心神、尽可能的找出解决办法才是正道。

其一、 GDI+ 中发生一般性错误。

  这个或许遇到的可能性很大,我已经在到现在为止的编程经历中两次遇到这个类型的错误。第一次被折磨的不轻,主要是情绪极为激动。第二次,算是冷静地解决问题。

我所遇到的这个问题主要是因为将Bitmap关联的资源释放后再次使用Bitmap对象。在下图中的代码中,我先从文件流中创建了一个Bitmap对象,然后关闭了该文件流。在接下来调用Bitmap对象的Save方法时产生了这个错误。

  所以这个问题发生后,可以先考虑自己是不是关闭或者释放了和Bitmap相关的资源所导致的。

2011061517045267.jpg

2011061517105184.jpg

其二、参数无效。

  这个问题一般会让人联系到Graphics.DrawImage是不是除了问题,而且网上相关资源也是主要集中在DrawImage上。在我下面的代码中,是因为在调用Graphics.DrawImage之前手动释放了Bitmap的资源(通过调用Bitmap.Dispose方法)。

2011061517050628.jpg

2011061517052233.jpg

总结:在如上两类错误中,分别是过早或者不正确的调用了图像对象所关联资源的释放或关闭方法、图像本身的资源释放方法。但是,从第二个图中我们可以看出,过早释放关联资源和图像本身后在调试状态查看图像对象的内部结构时明显不一样。

转载于:https://www.cnblogs.com/klvk/archive/2011/06/15/2081664.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
06-02
好的,以下是一些关于 C# GDI+ 的面试题: 1. 什么是 GDI+?它有什么作用? GDI+ 是 .NET Framework 中的图形设备界面,它提供了一组开发人员可以用来创建高质量图形和图像的类和方法。通过 GDI+,我们可以创建各种各样的图形和图像,包括线条、矩形、圆形、多边形、文本、图片等,还可以进行图像处理、图形绘制等操作。 2. GDI+ 和 GDI 的区别是什么? GDI+ 是 GDI 的升级版,在功能上比 GDI 更加强大,它提供了更多的绘图方法和更高级的对象模型,同时还支持 alpha 通道、图像处理等高级功能。此外,GDI+ 还支持更多的图像格式,包括 BMP、JPEG、PNG、GIF、TIFF 等。 3. 如何使用 GDI+ 绘制一条直线? 在 C# 中,我们可以使用 System.Drawing 命名空间中的 Pen 和 Graphics 对象来绘制直线,具体的代码示例如下: ``` // 创建 Pen 对象 Pen pen = new Pen(Color.Black); // 创建 Graphics 对象 Graphics g = this.CreateGraphics(); // 绘制直线 g.DrawLine(pen, 0, 0, 100, 100); ``` 4. 如何使用 GDI+ 绘制一个矩形? 和绘制直线类似,我们可以使用 System.Drawing 命名空间中的 Pen 和 Graphics 对象来绘制矩形,具体的代码示例如下: ``` // 创建 Pen 对象 Pen pen = new Pen(Color.Black); // 创建 Graphics 对象 Graphics g = this.CreateGraphics(); // 创建 Rectangle 对象 Rectangle rect = new Rectangle(0, 0, 100, 100); // 绘制矩形 g.DrawRectangle(pen, rect); ``` 5. 如何使用 GDI+ 绘制一个圆形? 和绘制直线、矩形类似,我们可以使用 System.Drawing 命名空间中的 Pen 和 Graphics 对象来绘制圆形,具体的代码示例如下: ``` // 创建 Pen 对象 Pen pen = new Pen(Color.Black); // 创建 Graphics 对象 Graphics g = this.CreateGraphics(); // 创建 Rectangle 对象 Rectangle rect = new Rectangle(0, 0, 100, 100); // 绘制圆形 g.DrawEllipse(pen, rect); ``` 以上是几个常见的关于 C# GDI+ 的面试题和答案,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值