使用Graphics.DrawLines时出现ArgumentException

时间:2015-09-23 13:03:44

标签: c#

我正在使用visual studio express 2012。

我正在尝试绘制NRZI信号。但每当我运行我的程序时,我总是会收到此错误:

  

未处理的类型' System.ArgumentException'发生在   System.Drawing.dll附加信息:参数无效。

错误位于draws.DrawLines(Pens.Red, NRZI);

有人可以告诉我为什么吗?

这是我的代码:

Graphics draws;
Point[] NRZI = new Point[592]; // each binary value equals 74 pixels wide
string data = "10101010";

private void pictureBox1_Paint(object sender, PaintEventArgs e) 
{
    int x = 0;

    if (comboBox1.Text == "NRZI") 
    {
        for (int c = 0; c < data.Length; c++)
        {

            if (data.ToCharArray()[c] == '0') // check if binary value is 0
            {
                for (int p = 0; p < 74; p++)
                {
                    NRZI[x] = new Point(x, 109); // point to signify 0 or low
                    x++;
                }
            }
            if (data.ToCharArray()[c] == '1') // check if binary value is 1
            {
                for (int p = 0; p < 74; p++)
                {
                    NRZI[x] = new Point(x, 9);  // point to signify 1 or high
                    x++;
                }                        
            }
        }
        this.Refresh(); // calls paint
        for (w = 0; w < pictureBox1.Width; w++)
        {
            draws.DrawLines(Pens.Red, NRZI);
        }
    }
}

2 个答案:

答案 0 :(得分:2)

看起来您使用了错误的Graphics对象。在paint事件处理程序中,您需要使用提供的PaintEventArgs.Graphics参数的PaintEventArgs e属性:

e.Graphics.DrawLines(Pens.Red, NRZI);

答案 1 :(得分:0)

我刚才遇到了同样的问题。问题是图形对象处理。所以它的每个属性和方法都会抛出这个异常。我给出了这个答案,以防其他人绊倒它。