2014-11-11 2 views
0

Я пытаюсь нарисовать многоугольник в моем WFA, но он не может найти «точек кривой» в моем классе, которые определенно естьРисование многоугольников C# ООП не может найти массив

class Driehoek : Figuur 
{ 
    Pen blackPen = new Pen(Color.Black, 3); 

    public void driehoek(Point p) 
    { 
     //this.x = 120; 
     //this.y = 50; 
     //this.width = 100; 
     //this.height = 100; 

     Point point1 = new Point(100, 150); 
     Point point2 = new Point(150, 100); 
     Point point3 = new Point(200, 150); 
     Point[] curvePoints = 
     { 
      point1, 
      point2, 
      point3, 

     }; 



    } 

    public override void Teken(Graphics g) 
    { 

     g.DrawPolygon(blackPen, curvePoints); 
     // Error here is: The name 'curvePoints' does not exist in the current context 
    } 
} 
+1

, очевидно, вы должны переместить __declaration__ из точек кривых из 'driehoek' до уровня – TaW

+1

класса переменного контекстный в методе. Объявите его как члена класса, как «blackPen». – SimpleVar

+0

'curvePoints' - локальная переменная вашего метода' driehoek'. Вы не можете получить доступ к нему в методе Teken. –

ответ

0

которые определенно там

Это ложь! Ваш массив находится в другом методе (из области «Teken»), а не в классе.

+0

Да, но если я поместил их туда, они не смогут найти point1 , 2,3 –

+0

@ J.Dekkers это не константа, вы можете объявить ее, но назначить позже. – Mephy

+0

По-прежнему не удается заставить его работать, где объявить/назначить тогда (довольно новое для программирования) –

1

Создать в своем классе новый Point[], сразу после того, как вы сделаете Pen:

class Driehoek 
{ 
    Pen blackPen = new Pen(Color.Black, 3); 
    Point[] curvePoints; 
} 

Затем измените функцию слегка, так что вы назначаете массив в существующий массив, вместо того чтобы создавать новый один:

public void driehoek(Point p) 
{ 
    //this.x = 120; 
    //this.y = 50; 
    //this.width = 100; 
    //this.height = 100; 

    Point point1 = new Point(100, 150); 
    Point point2 = new Point(150, 100); 
    Point point3 = new Point(200, 150); 

    //Changed Point[] curvePoints to just curvePoints 
    curvePoints = 
    { 
     point1, 
     point2, 
     point3, 

    }; 
} 
+0

В нем говорится, что point1,2,3 нельзя использовать в качестве утверждения, и он ожидает; в конце кривойPoints –

Смежные вопросы