例如Graphics g = this.CreateGraphics();
Point[] points ={ new Point(0, 0), new Point(300, 150), new Point(200, 200), new Point(400, 400)  }; 
g.DrawLines(new Pen(Color.Blue), points);如果其中不确定画哪个点? 如何动态的选择呢?

解决方案 »

  1.   

    Point可以动态生成,比如在MouseDown中,每次发生这个事件就生成一个点,加点到某个集合中,然后根据这些点来画线。
      

  2.   

                Point p1 = new Point(50, 200);
                Point p2 = new Point(300, 150);
                Point p3 = new Point(200, 200);
                Point p4 = new Point(400, 200);
                bool b = true;
                if (b == true)
                {
                    p2 = Point.Empty;
                    p3 = Point.Empty;
                }
                Point[] points ={ p1, p2, p3, p4 };
                g.DrawLines(new Pen(Color.Blue), points);我暂时是用Point.Empty来实现,但是Point.Empty会把点画到(0,0)处,而我需要的是如果我不需要哪点,哪点就不显示出来?哪位还有更好的解决办法??
      

  3.   

    还有一个问题:g.DrawLines画的线如果不在当前窗体后怎么就没了。???
    求解中
      

  4.   

    画一个小圆圈(小矩形),当鼠标点击的位置落在这个圆圈内的时候,就执行一个该点的取消/选择操作,画线的时候就根据哪些点被选择来画线。画线的代码应该放在Paint事件处理方法,需要绘制的时候会自动调用它,比如你提到的就是一种情况。需要强制更新的话可以调用Invalidate()。
      

  5.   

    如果用g.DrawLines方法的话,你必须得重建一个数组.看看这个方法可以吗?用一组临时点和常量点来实现,画的时候把一个点重合画出来的就是一条线了        Point p1,cp1 = new Point(50, 200);
            Point p2,cp2 = new Point(300, 150);
            Point p3,cp3 = new Point(200, 200);
            Point p4,cp4 = new Point(400, 200);
            bool b = true;
            if (b == true)
            {
                p2 = cp1;
                p3 = cp1;
            }
            Point[] points = { p1, p2, p3, p4 };
            g.DrawLines(new Pen(Color.Blue), points); 
      

  6.   

    但是这样的话
    Point p1,cp1 = new Point(50, 200); 
    p1这个点就必须画了
    按照我的思路,P1应该也是可选的
    谢谢回复,还有其他的方法吗??
      

  7.   

    绘图操作要放在窗体或控件的paint事件中很久不用C#了,C#的数组应该支持insert或者append方法的吧,根据需要生成一个新数组就可以了
      

  8.   

    是啊  比如你不想画p1和p2,只画 p3,p4的话
    你就把 p1 = cp3,p2 = cp3就可以了p3 = cp3,p4 = cp4就可以了
      

  9.   

    怎么引入数组啊?
    point点和string型好像没办法转换啊。。 
    或者把point转换成string之后,就没法搞回来了啊
    继续求高手解答?
      

  10.   

    我现在也搞不清楚数组和这个points怎么对应啊?
    能不能说的详细一点呀?
      

  11.   

    添加和删除的时候通过ArrayList来进行,需要绘制的时候就转换为数组就是了。
      

  12.   

    public Point[] m_lstPt;
    public void OnMouseUp(object sender, MouseEventArgs e)
    {
       m_lstPt.Add(new Point(e.X, e.Y));
    }
    public void OnPaint(object sender, PaintEventArgs e)
    {
       if (m_lstPt.Length <= 1) return;   e.Graphics.DrawLines(new Pen(Color.Red), m_lstPt);
    }