关于Image newImage = Image.FromFile("SampImag.jpg");的疑问

「已注销」 2016-08-23 11:01:19
这是msdn上的例子,可是我有一个疑问,抽象类不能被实例化,那newImage算什么呢?为什么还能这样用?Image.FromFile()方法的返回值也是Image类型,一个抽象类能作为返回值类型吗?
...全文
366 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2016-08-23
  • 打赏
  • 举报
回复
引用 11 楼 feipeng8848 的回复:
[quote=引用 9 楼 sp1234 的回复:] Image.FromFile(....) 可以读取 WMF、EMF 文件,产生的并不是位图。你测试是读取的是位图,那是你选择的测试数据文件有局限性。
果然是这样,大神真厉害 [/quote] 还是我太粗心,第一次查看源码的时候只看见了Bitmap就草草关闭了页面,其实就在它下面。惭愧惭愧
「已注销」 2016-08-23
  • 打赏
  • 举报
回复
引用 9 楼 sp1234 的回复:
Image.FromFile(....) 可以读取 WMF、EMF 文件,产生的并不是位图。你测试是读取的是位图,那是你选择的测试数据文件有局限性。

果然是这样,大神真厉害
「已注销」 2016-08-23
  • 打赏
  • 举报
回复
引用 9 楼 sp1234 的回复:
Image.FromFile(....) 可以读取 WMF、EMF 文件,产生的并不是位图。你测试是读取的是位图,那是你选择的测试数据文件有局限性。
哦,这样啊,我只是试了JPG和png两个文件格式。
  • 打赏
  • 举报
回复
Image.FromFile(....) 可以读取 WMF、EMF 文件,产生的并不是位图。你测试是读取的是位图,那是你选择的测试数据文件有局限性。
「已注销」 2016-08-23
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
一个对象可以有许多种类型,声明变量时只要是兼容于对象实例的类型,都是可以通过编译的。所以声明变量的类型可以不是实例化时的类型。 但是,一般来说,编程时都会声明为变量为一个尽可能具体的、准确的类型,而不是对象的多种类型中抽象的那个。 Image.FromFile(...) 即可能返回 Bitmap,也可能返回 Metafile,是两种完全不一样的对象。但是这两中对象都是 Image,所以声明变量为 Image 类型。
原来声明变量可以不用实例,赞,多谢帮忙。刚刚去源码查到FromeFile方法是返回的Bitmap,也要谢谢5楼给的思路
「已注销」 2016-08-23
  • 打赏
  • 举报
回复
引用 5 楼 starfd 的回复:
http://referencesource.microsoft.com/#System.Drawing/commonui/System/Drawing/Image.cs,cd75f3ae060b69f3
哈,我咋没想到呢,多谢多谢
  • 打赏
  • 举报
回复
一个对象可以有许多种类型,声明变量时只要是兼容于对象实例的类型,都是可以通过编译的。所以声明变量的类型可以不是实例化时的类型。 但是,一般来说,编程时都会声明为变量为一个尽可能具体的、准确的类型,而不是对象的多种类型中抽象的那个。 Image.FromFile(...) 即可能返回 Bitmap,也可能返回 Metafile,是两种完全不一样的对象。但是这两中对象都是 Image,所以声明变量为 Image 类型。
「已注销」 2016-08-23
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
实际返回的是Image子类,debug模式你可以看它到底是什么
再多问一句,为什么指定的类型是Image实际上却是一个Bitmap实例呢?而且创造Bitmap对象的实际用法却非常类似于:int i=0;这样的基本数据类型,这是为啥呢?
「已注销」 2016-08-23
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
实际返回的是Image子类,debug模式你可以看它到底是什么

原来是一个Bitmap,多谢你了
「已注销」 2016-08-23
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
实际返回的是Image子类,debug模式你可以看它到底是什么
多谢,我去试一下
  • 打赏
  • 举报
回复
实际返回的是Image子类,debug模式你可以看它到底是什么

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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