Как поместить изображение в графический блок из Bitmap - PullRequest
23 голосов
/ 13 апреля 2009

Можно ли загрузить изображение из памяти (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 в графическом окне в моей форме?

Ответы [ 4 ]

51 голосов
/ 13 апреля 2009

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

pictureBox.Image = bmp;
3 голосов
/ 03 мая 2014

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

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

if (pictureBox.Image != null) pictureBox.Image.Dispose();
pictureBox.Image = myBitmap.Clone(
    new Rectangle(0, 0, myBitmap.Width, myBitmap.Height), 
    System.Drawing.Imaging.PixelFormat.DontCare);
0 голосов
/ 20 февраля 2016
pictureBox.Image = Properties.Resources.image.bmp;
0 голосов
/ 12 января 2013

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...