【问题标题】:How to put image in a picture box from Bitmap如何将图像从位图放入图片框中
【发布时间】:2010-10-19 02:48:28
【问题描述】:

是否可以从内存(byte[]streamBitmap)加载图片而不将其保存到磁盘?

这是我用来将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");
    }
}

我可以将Bitmap 放在表单的图片框中,而不是使用Bmp.save()

【问题讨论】:

    标签: c# bitmap image


    【解决方案1】:

    你试过了吗?

    pictureBox.Image = bmp;
    

    【讨论】:

    • 这段代码对我有用。 this.pictureBox1.Image = Image.FromStream(ms);
    【解决方案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);
    

    【讨论】:

    • 谢谢。尝试使用位图而不克隆它会在 System.Drawing.Dll 中引发异常。使用您的 .Clone 建议为我解决了这个问题!
    【解决方案3】:

    如果您使用的是 C++ 编程语言,可以这样做:

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

    然后你可以在需要加载位图时调用backGroundImage

    【讨论】:

      猜你喜欢
      • 2012-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-01
      • 2022-11-16
      • 1970-01-01
      相关资源
      最近更新 更多