我正在将VB6中的旧程序转换为C#.NET Framework 4.8
我在VB6中有如下电话
Private m_FingerprintBmp As BITMAP
. . .
Set m_FingerprintBmp = New BITMAP
m_FingerprintBmp.LoadFromByteArray fingerprintByteArray
If m_FingerprintBmp.IsLoaded Then
在C#中,我的转换如下
Bitmap m_FingerprintBmp;
. . .
m_FingerprintBmp = new Bitmap(); // Invalid no default ctor
m_FingerprintBmp.LoadFromByteArray(fingerprintByteArray);
if (m_FingerprintBmp.IsLoaded)
但是.Net中没有Bitmap类的默认构造函数,并且C#中没有BitFrom类的LoadFromByteArray()方法和IsLoaded属性或方法。.NET中的等效调用是什么?
[编辑]我确定的是VB6支持未加载图像的BITMAP实例的概念,但是.NET Bitmap类没有默认的构造函数,因此似乎任何.NET Bitmap实例都必须包含一些位图图像的形式。因此,.NET Bitmap类不存在IsLoaded的概念。所以我的结论是,我应该使用空引用来指示已卸载的位图,而不是没有图像的实例。
有人可以确认我的结论正确吗?
我会尝试使用Image.FromStream(new MemoryStream(fingerprintByteArray)
。如果数据适用于此类,则应从中获取一个Image
并在此时将其完全加载。
请注意,您要使用的Bitmap
来自GDI +,与VB6中的BITMAP
不同。