Ответ 1
Вы пробовали это?
pictureBox.Image = bmp;
Можно ли загрузить изображение из памяти (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
в поле изображения в моей форме?
Вы пробовали это?
pictureBox.Image = bmp;
У меня был код, похожий на принятый ответ, который вызвал утечку памяти. Проблема заключается в том, что когда вы устанавливаете образ растрового изображения в растровое изображение, вы все равно ссылаетесь на растровое изображение, а не на создание копии. Если вам нужно установить изображение несколько раз, вам нужно убедиться, что вы удаляете все старые растровые изображения.
Это для тех, кто хочет клонировать растровое изображение в окне изображения. Попробуйте следующее:
if (pictureBox.Image != null) pictureBox.Image.Dispose();
pictureBox.Image = myBitmap.Clone(
new Rectangle(0, 0, myBitmap.Width, myBitmap.Height),
System.Drawing.Imaging.PixelFormat.DontCare);
Если вы работаете с языком программирования С++, это можно сделать следующим образом:
void backGroundImage()
{
Image^ back = gcnew Bitmap("C:\\Users\\User\\Documents\\image.bmp");
pictureBox1->BackGroundImage = back;
};
Затем вы можете вызвать backGroundImage
, когда вам нужно загрузить растровое изображение.
pictureBox.Image = Properties.Resources.image.bmp;