2015-09-23 2 views
1

Я использую visual studio express 2012.ArgumentException при использовании Graphics.DrawLines

Я пытаюсь нарисовать сигнал NRZI. Но всякий раз, когда я запускаю свою программу, я всегда получаю эту ошибку:

An unhandled exception of type 'System.ArgumentException' occurred in System.Drawing.dll Additional information: Parameter is not valid.

Ошибка находится где-то в 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); 
     } 
    } 
} 
+1

Что такое «NRZI» - точка исключения? –

+0

Много * magic *: * words * ('NRZI') и * numbers * (' 74', '592',' 109') –

+2

592/74 = 8, поэтому я считаю, что 'data' имеет 8 элементов в max ? и почему вы 'for (w = 0; w quetzalcoatl

ответ

2

Похоже, вы используете неправильный Graphics объект. В обработчике краски событий, вам нужно использовать PaintEventArgs.Graphics свойства поставляемого PaintEventArgs e аргумента:

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

У меня была такая же проблема, только сейчас. Проблема заключалась в том, что графический объект был расположен. Таким образом, каждое свойство и метод этого метода выбрасывают это исключение. Я даю этот ответ, если кто-то другой наткнется на него.