Как преобразовать собственный двоичный образ в памяти в образ 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 в целом.