Каков эквивалентный вызов C# для класса Bitmap для вызова BITMAP.IsLoaded в VB6? - PullRequest
1 голос
/ 03 апреля 2020

Я конвертирую устаревшую программу в 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# I преобразованы следующим образом

Bitmap m_FingerprintBmp;
. . .
m_FingerprintBmp = new Bitmap(); // Invalid no default ctor
m_FingerprintBmp.LoadFromByteArray(fingerprintByteArray);
if (m_FingerprintBmp.IsLoaded)

Но в классе Bitmap нет конструктора по умолчанию. Net для класса Bitmap, нет метода LoadFromByteArray () и свойства или метода IsLoaded для класса Bitmap в C# В чем будет эквивалентный вызов. NET?

[EDIT] Что я определил, так это то, что VB6 поддерживает концепцию экземпляра BITMAP, в котором не загружено изображение, но есть растровое изображение. NET Класс не имеет конструктора по умолчанию, поэтому он кажется любым. NET Экземпляр растрового изображения должен содержать некоторую форму растрового изображения. Таким образом, концепция IsLoaded не существует для NET класса Bitmap. Поэтому я пришел к выводу, что я должен использовать нулевую ссылку для обозначения выгруженного растрового изображения вместо экземпляра без изображения.

Кто-нибудь может подтвердить, что мой вывод верен?

1 Ответ

0 голосов
/ 04 апреля 2020

Я бы использовал попытку использовать Image.FromStream(new MemoryStream(fingerprintByteArray). При условии, что данные работают с этим классом, вы должны получить Image из него, и в этот момент он будет полностью загружен.

Обратите внимание, что Bitmap, который вы пытаетесь использовать, получен из GDI +, что не совпадает как ваш BITMAP в VB6.

...