none
如何正确使用DrawLine函数? RRS feed

  • 问题

  • 刚刚接触c#,想写一个windows窗体程序;

    我是想在窗体中画一条线,将一个窗体中的其中一个tapcontrol1分成上下两个区域;

    到网上看过相关的一些资料,代码如下:

     System.Drawing.Graphics g = null; 

    g = this.CreateGraphics();
     g.DrawLine(new Pen(Color.Black,1),10,10,10,200);

    生成的时候报错说g未声明或从未赋值。不知道是什么情况。我将写成g = this.tapcontrol1.CreateGraphics();也是报同样的错误。

    谁能说说具体是什么情况,需要如何赋值?

    2015年11月1日 9:31

答案

  • 你在哪里调用的这个代码? 

    我新建的winform程序,在Form的load event里面调用没有问题,但是显示不出来,正确的做法应该在Paint event里面画。

           private void Form3_Paint(object sender, PaintEventArgs e)
            {
                System.Drawing.Graphics g = null;
    
                g = this.CreateGraphics();
                g.DrawLine(new Pen(Color.Black, 1), 10, 10, 10, 200);
            }

    可以直接用PaintEventAgrs的Graphics成员

            private void Form3_Paint(object sender, PaintEventArgs e)
            {
                e.Graphics.DrawLine(new Pen(Color.Black, 1), 10, 10, 10, 200);
            }
    

    TabPage也是一样的

            private void tabPage1_Paint(object sender, PaintEventArgs e)
            {
                e.Graphics.DrawLine(new Pen(Color.Red, 1), 10, 10, 10, 200);
            }

    如果你想分成上下两个区域,我觉得画线不是一个好办法,你可以试一试SplitContainer , 或者 两个Panel. 

    2015年11月2日 0:11