创建从位图到图片框的图像

时间:2014-06-06 11:32:42

标签: c# winforms bitmap picturebox

我一直在尝试创建位图,并使用所述位图创建需要在图片框内显示的图像。到目前为止,谷歌还没有任何帮助。位图需要用数组中定义的黑/白像素填充,但我现在使用Aliceblue。

当我运行代码时,我得到错误"值不能为空"在这一行

Bitmap afbeelding = new Bitmap(resolutie, resolutie, g);

以下是我尝试的内容:

public void draw(Array array)
{

    Bitmap afbeelding = new Bitmap(resolutie, resolutie, g);

    for(int x = 0; x < array.Length; x++)
    {
        for (int y = 0; y < array.Length; y++)
        {
            afbeelding.SetPixel(x, y, Color.AliceBlue);
        }
    }

   pictureBox1.Image = afbeelding;
   //afbeelding = pictureBox1.CreateGraphics();
}

有谁知道如何解决这个问题?由于图形中没有DrawPixel函数,我不知道如何填充g

3 个答案:

答案 0 :(得分:0)

假设数组包含图像的定义,您应该使用数组的大块填充图像的行,而不是使用数组水平和垂直填充图像。

假设数组是10 x 10图像,这将使数组长100个字节。您需要将前10个字节分配给图像的第一行,依此类推。您还需要检查数组成员的值是否绘制像素。

示例:

public void draw(bool[] array)
{
    Bitmap afbeelding = new Bitmap(resolutieX, resolutieY);

    for(int y = 0; y < resolutieY; y++)
    {
        for (int x = 0; x < resolutieX; x++)
        {
            if (array[y * resolutieX + x] == true)
                afbeelding.SetPixel(x, y, Color.Black);
            else
                afbeelding.SetPixel(x, y, Color.White);
        }
    }

    pictureBox1.Image = afbeelding;
}

要测试它(假设表单上有一个button1):

int resolutieX = 100;
int resolutieY = 100;
Random R = new Random();    

private void button1_Click(object sender, EventArgs e)
{
    bool[] bArray = new bool[resolutieX * resolutieY];

    for (int i = 0; i < bArray.Length; i++)
        bArray[i] = R.Next(0, 2) == 1 ? true : false;

    draw(bArray);
}

答案 1 :(得分:0)

    public void draw(int[] array)
    {

        Bitmap afbeelding = new Bitmap(11, 11);


        for (int i = 0; i < array.Length; i++)
        {
            afbeelding.SetPixel(array[i], array[i], Color.Black);
        }

        pictureBox1.Image = afbeelding;
        //afbeelding = pictureBox1.CreateGraphics();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        draw(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });
    }

答案 2 :(得分:0)

为什么不锁定像素阵列?看看这个,速度更快:

BitmapData Class