代码之家  ›  专栏  ›  技术社区  ›  Amichai

从双数组生成和呈现位图

c#
  •  0
  • Amichai  · 技术社区  · 15 年前

    我对C还不熟悉,我确信我在这里遗漏了一些简单的东西。

    我正在尝试用双数组中的整数值(0-255)构建位图,然后将其呈现在PictureBox中。我想我的位图正在生成,但它没有显示在我的图片框中。

    Bitmap bmp = new Bitmap(image_width, image_height);
    
    Color pxl_color = new Color();
    
    for (int i = 0; i < image_width; i++)
    {
        for (int j = 0; j < image_height; j++)
        {
            pxl_color = Color.FromArgb(array_bitmap[i][j]);
            bmp.SetPixel(i, j, pxl_color);
        }
    }
    
    PictureBox1.Image = bmp;
    

    事先谢谢。

    编辑:

    改变:

    pxl_color=Color.FromArgb(array_bitmap[i][j]);
    

    到:

    pxl_color=Color.FromArgb(array_bitmap[i][j],array_bitmap[i][j],array_bitmap[i][j]);
    

    解决问题。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Sijin    15 年前

    通过将颜色的alpha值设置为零,检查您的图像是否透明。32位argb值的字节顺序是aarrggbb。用aa表示的最有效字节(msb)是alpha分量值。确保颜色数组中的alpha大于零。

    还可以尝试将PictureBox SizeMode设置为AutoSize。

        2
  •  0
  •   drharris    15 年前

    除了我生成随机值而不是使用 array_bitmap . 检查并确保您的位图对象没有因为某种原因被GC破坏(可能将其存储在实例变量中)。这也可能是一个绘画问题,你必须刷新或重新绘制图片框或整个窗体。