Как преобразовать собственный двоичный образ в памяти в образ Winforms?

У меня есть родная библиотека C++, которая создает выходное изображение как родную область в памяти. Это ARGB, 32 бита на один пиксель, ширина * высота раз. У меня есть приложение winforms, где я хочу отобразить это выходное изображение. Поэтому я добавил picturebox, которому нужно установить свойство Image в Image. Как мне конвертировать это?

Sidenote: Некоторое время назад у меня была похожая проблема с приложением WPF, отображающим такое изображение. Я получил это работает так:

BitmapSource ^ bitmap = BitmapSource::Create(pic->GetX(), pic->GetY(),
        96, 96, PixelFormats::Bgr32, nullptr,
        IntPtr(pic->GetPointer()), pic->GetX() * pic->GetY() * sizeof(unsigned int), pic->GetX() * sizeof(unsigned int));
ImageControl->Source = bitmap;

где pic->GetPointer() возвращает собственный указатель на изображение в памяти. Но это не работает для Winforms.

1 ответ

Решение

Адаптация из комментариев:

Используйте Bitmap.LockBits(), чтобы получить указатель на данные пикселей, и посмотрите на класс BitmapData в целом.

Другие вопросы по тегам