Bitmap b = (Bitmap)Bitmap.FromFile(path);
//需要投射
..Graphics.DrawImage(b,x,y);
//不需要施放,而DrawImage只接受类型Image
答案 0 :(得分:3)
Bitmap
始终为Image
,但不是每个Image
都是Bitmap
;或者在课堂上:
public sealed class Bitmap : Image {...}
第一个中的方法实际上是从Image
继承的 - 它是真的调用:
public static Image FromFile(string path)
,您需要声明将Bitmap
推入Bitmap
变量是Image
。毕竟,它可能是另一种支持的path
类型 - 而不仅仅是位图。大概是你的Image img = Image.FromFile(path); // or var img = Image.FromFile(path);
...
Graphics.DrawImage(img,x,y);
指向位图类型的图像。
如果你有:
Image
然后生活会更加清晰。
在第二种情况下,只需Image
- 任何 Bitmap
即可; {{1}}很好......
答案 1 :(得分:0)
当您致电Bitmap.FromFile
时,您实际上正在呼叫Image.FromFile
。 FromFile
不是Bitmap
的静态方法,但由于Bitmap
继承自Image
,您还可以通过FromFile
访问Bitmap
方法。 Bitmap.FromFile
返回Image
的原因是因为它是FromFile
类的Image
。
Image.FromFile
可以加载不同类型的图片,例如Bitmap
类型的图片。您需要将Image.FromFile
的结果转换为Bitmap
,因为无论加载的图片类型如何,Image.FromFile
的返回类型始终为Image
。
您不需要为Graphics.DrawImage
强制转换此内容的原因是因为该方法接受任何来自Image
Bitmap
的图像类型。