我一直在尝试创建位图,并使用所述位图创建需要在图片框内显示的图像。到目前为止,谷歌还没有任何帮助。位图需要用数组中定义的黑/白像素填充,但我现在使用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
答案 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)
为什么不锁定像素阵列?看看这个,速度更快: