Ivan Prodanov
Ivan Prodanov

Reputation: 35502

How to put image in a picture box from Bitmap

Is it possible to load a picture from memory (byte[] or stream or Bitmap) without saving it to disk?

This is the code I use to turn the byte[] array into a 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");
    }
}

Instead of using Bmp.save(), can I put the Bitmap in the picture box on my form?

Upvotes: 24

Views: 102753

Answers (3)

JSideris
JSideris

Reputation: 5261

I had some code resembling the accepted answer that caused a memory leak. Problem is that when you set the picture box image to the bitmap, you're still referring to the bitmap, rather than creating a copy. If you need to set the image multiple times you need to make sure you're disposing all the old bitmaps.

This is for anyone who's looking to clone a bitmap to an image box. Try this:

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

Upvotes: 8

r.mirzojonov
r.mirzojonov

Reputation: 1249

If you are working with C++ programming language, it can be done like this:

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

Then you can call backGroundImage when you need to load a bitmap.

Upvotes: 0

ChrisF
ChrisF

Reputation: 137108

Have you tried this?

pictureBox.Image = bmp;

Upvotes: 62

Related Questions