System.Drawing.Bitmap异常????

xingxingsuhuan 2009-10-14 09:04:52
Bitmap empPic;
try
{
empPic = new Bitmap("C:\\Documents and Settings\\Administrator\\桌面\\1244650666.jpg
");
}
catch(Exception ex)
{
lblErr.Text = "错误文件格式,请重试!!确定按钮, ex:" + ex.ToString() + "lnkPic.Src:" + lnkPic.Src;
lblErr.Visible = true;
return;
}
异常信息:System.ArgumentException: 参数无效。 在 System.Drawing.Bitmap..ctor(Stream stream)
...全文
822 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
saishangpeiqian 2009-10-14
  • 打赏
  • 举报
回复
J2ME,Image类没有公开的构造函数,但是有一大堆静态的creatImage()方法,这N多种重载能让你从文件名、数据流、已经构造好的 Image对象甚至字节数组里创建出Image对象来,创建出来你就能用了,还算挺方便的。但是Android则不然,它那个Bitmap类,若要从资源文件构造,可麻烦得要死,请看代码:
Resources r = getResources();
Bitmap board = Bitmap.createBitmap(240, 240, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(board);
Drawable tempBoard = r.getDrawable(R.drawable.board);
tempBoard.setBounds(0, 0, 240, 240);
tempBoard.draw(c);
这段代码是在Activity里面调用的,Resources只是说明我们的Bitmap是从资源文件里面构造的,并没有其他的特别之处。可以看到,Bitmap与Image一样,也没有通过构造函数而是通过静态方法得到了它的实例(这一点和 Image类是一样的)。Bitmap.createBitmap(int,int,Bitmap.config)方法只是创建了一个空的Bitmap对象(这个空不是空指针null,有些类似于空字符串"",至少我是这么理解的),然后通过Canvas类(这是Android的Canvas类,不是 J2ME的)的构造方法,将Bitmap对象传递进去,再利用Drawable.draw(Canvas)方法把Drawable对象(已经很接近资源文件了)画到Canvas上,这样才让Bitmap与资源文件夹drawable里的png之类的图像文件套上关系……

这个过程好麻烦哦,说好听的是Bitmap难以高攀,说不好听的就是脱了裤子放屁。J2ME一步到位的事情,它做了三步,虽说不怎么复杂,但是为什么这么做估计只有google知道。

实例创建好了,也初始化过了,于是能用了,说起来Bitmap在用法上还是很灵活的,能给好多地方使用,而且跟J2ME的Image用法极为相似,这点挺让人满意的。
xray2005 2009-10-14
  • 打赏
  • 举报
回复
都告诉你了.无效的参数.
new Bitmap(Stream) 而不是使用字符串去new
chen_ya_ping 2009-10-14
  • 打赏
  • 举报
回复
你可以先建一个FileStream读取那个文件,然后在把这个FileStream作为参数传入。这个问题很明显就是你的构造函数中的参数不对。

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧