-1

クラスで書いたブレゼンハムのアルゴリズムがあります線線を描くことができます今度はポリゴンを描きたいので、関数(void Polygon)を書きました。クリックするたびに座標を配列に格納し、関数で取得する必要があります。各クリックを保存する方法がわからない
Radiobutton1は線を描くためのもので、radiobutton2はポリゴンを描くためのものです

private void panel1_MouseClick(object sender, MouseEventArgs e)
        {           
           if(radioButton1.Checked)
            if (firstClick)
            {
                firstX = e.X;
                firstY = e.Y;
                firstClick = false;
            }
            else
            {
              Line l = new Line(firstX, firstY, e.X, e.Y, panel1.CreateGraphics(), Convert.ToInt32(textBox1.Text));

              firstClick = true;

            }
           if(radioButton2.Checked)
            {
       //how to write here so as to store each click in array

                }
            }

        private void button1_Click(object sender, EventArgs e)
        {
            int n = Convert.ToInt32(textBox2.Text);

            Polygon(n, coor);
        }
   void Polygon(int n,int[] coordinates)
     {
       if(n>=2)
      {
         Line l=new Line(coordinates[0],coordinates[1],coordinates[2],coordinates[3],panel1.CreateGraphics(), Convert.ToInt32(textBox1.Text));
         for(int count=1;count<(n-1);count++)
             l=new Line(coordinates[(count*2)],coordinates[((count*2)+1)],coordinates[((count+1)*2)],coordinates[(((count+1)*2)+1)],panel1.CreateGraphics(), Convert.ToInt32(textBox1.Text));
      }
4

1 に答える 1

1

クリック座標のポイントを作成できます。

Point p = new Point(e.x, e.y);

取得したポイントをリストに保存します。

// Declaration:
List<Point> myPoints = new List<Point>();

// in the method: 
if (radioButton2.Checked) {
   myPoints.Add(new Point(e.x, e.y));
}

通常、クリック数がわからないため、配列は適切ではありません。リストは可変長であるため、このような状況で役立ちます。

于 2012-05-13T11:58:01.697 に答える