将PictureBox中的图像转换为位图

DjM*_*lan 11 .net c# bitmap winforms

我使用以下代码将PictureBox中的图像转换为位图:

bmp = (Bitmap)pictureBox2.Image;
Run Code Online (Sandbox Code Playgroud)

但我得到的结果是bmp = null.谁能告诉我我是怎么做到的?

Nir*_*ngh 10

根据我的理解,你还没有分配PictureBox的Image属性,因此它在类型转换时返回null.

PictureBox属性自动转换Image格式,如果在Image属性上看到工具提示,它将显示System.Drawing.Bitmap.检查您的图像属性是否已正确分配.

检查一下,它在我这边工作.

private void button1_Click(object sender, EventArgs e)
        {
            Bitmap bmp = (Bitmap)pictureBox1.Image;
        }

        private void TestForm12_Load(object sender, EventArgs e)
        {
            pictureBox1.Image = Image.FromFile("c:\\url.gif");
        }
Run Code Online (Sandbox Code Playgroud)

/// 使用BitMap类

 Bitmap bmp = new Bitmap(pictureBox2.Image);
Run Code Online (Sandbox Code Playgroud)

您可以直接pictureBox2.Image转换为Bitmap,也可以使用Bitmap类转换为Bitmap类对象.

参考: 位图构造函数(图像).

您可以在此处使用位图类找到更多选项

  • 你永远不应该使用`Image.FromFile(path)`.它是一个围绕`New Bitmap(path)`构造函数的简单包装器,它没有任何额外的优点,但在这个过程中丢失了更具体的`Bitmap`类型.所以只需使用`New Bitmap(path)`构造函数.在结果上使用`new Bitmap(image)`也不建议,因为它将图像转换为32bpp ARGB,如果您正在处理以后保存或操作时要保留的特定图像类型(如24bpp RGB),则可能不需要这样做,或带有调色板的索引图像). (2认同)