Как поместить изображение в поле для картинок из растрового изображения

Можно ли загрузить изображение из памяти (byte[] или stream или Bitmap) без сохранения его на диск?

Это код, который я использую для превращения массива byte[] в Bitmap:

unsafe
{
    fixed (byte* ptr = Misc.ConvertFromUInt32Array(image))
    {
        Bitmap bmp = new Bitmap(200, 64, 800, PixelFormat.Format32bppRgb, new IntPtr(ptr));
        bmp.RotateFlip(RotateFlipType.Rotate180FlipX);
        bmp.MakeTransparent(Color.Black);
        bmp.Save("test.bmp");
    }
}

Вместо использования Bmp.save(), могу ли я положить Bitmap в поле изображения в моей форме?

Ответ 1

Вы пробовали это?

pictureBox.Image = bmp;

Ответ 2

У меня был код, похожий на принятый ответ, который вызвал утечку памяти. Проблема заключается в том, что когда вы устанавливаете образ растрового изображения в растровое изображение, вы все равно ссылаетесь на растровое изображение, а не на создание копии. Если вам нужно установить изображение несколько раз, вам нужно убедиться, что вы удаляете все старые растровые изображения.

Это для тех, кто хочет клонировать растровое изображение в окне изображения. Попробуйте следующее:

if (pictureBox.Image != null) pictureBox.Image.Dispose();
pictureBox.Image = myBitmap.Clone(
    new Rectangle(0, 0, myBitmap.Width, myBitmap.Height), 
    System.Drawing.Imaging.PixelFormat.DontCare);

Ответ 3

Если вы работаете с языком программирования С++, это можно сделать следующим образом:

void backGroundImage()
{
    Image^ back = gcnew Bitmap("C:\\Users\\User\\Documents\\image.bmp");
    pictureBox1->BackGroundImage = back;
};

Затем вы можете вызвать backGroundImage, когда вам нужно загрузить растровое изображение.

Ответ 4

pictureBox.Image = Properties.Resources.image.bmp;