如题,代码如下
        private void button3_Click(object sender, EventArgs e)
        {
            Graphics mygraph = this.button4.CreateGraphics();
            mygraph.DrawLine(new Pen(Color.Blue, 5), 167, 12, 290, 12);
            mygraph.DrawLine(new Pen(Color.Blue, 5), 167, 12, 220, 63);
            mygraph.DrawLine(new Pen(Color.Blue, 5), 290, 12, 232, 63);
        }
点击button3后线画出来了,但几秒后自动消失了。什么原因,谢谢

解决方案 »

  1.   

    放到按钮的Paint事件中写:
    private void button3_Paint(object sender, PaintEventArgs e)
    {
        e.Graphics.DrawLine(new Pen(Color.Blue, 5), 167, 12, 290, 12);
        e.Graphics.DrawLine(new Pen(Color.Blue, 5), 167, 12, 220, 63);
        e.Graphics.DrawLine(new Pen(Color.Blue, 5), 290, 12, 232, 63);
    }
      

  2.   

     你自己绘制的图形在被遮盖 或 最小化后就消失 ,只要重写 onPaint函数 就可以 函数体内部
       base.OnPaint(e);
                Graphics mygraph = this.button4.CreateGraphics(); 
                mygraph.DrawLine(new Pen(Color.Blue, 5), 167, 12, 290, 12); 
                mygraph.DrawLine(new Pen(Color.Blue, 5), 167, 12, 220, 63); 
                mygraph.DrawLine(new Pen(Color.Blue, 5), 290, 12, 232, 63); 
      

  3.   

    我不想用paint事件,要用另外一个buttonclick去触发
      

  4.   

    你绘制的图在没有被遮蔽 或最小化 的状态下 是显示正常的, 但是如果被遮蔽或最小化或改变窗口的大小 都会引发窗体的
    Onpaint事件  也就是说你话的图 窗体没有记忆住,它只根据他自己的Onpaint函数进行绘制,如果你想在这种条件下显示你自己的图片,就要重写Onpaint函数(在里面加上你的绘图语句)
      

  5.   

            protected override void OnPaint(PaintEventArgs e)
            {
                base.OnPaint(e);
                Graphics mygraph = this.button5.CreateGraphics();
                mygraph.DrawLine(new Pen(Color.Blue, 5), 167, 12, 290, 12);
                mygraph.DrawLine(new Pen(Color.Blue, 5), 167, 12, 220, 63);
                mygraph.DrawLine(new Pen(Color.Blue, 5), 290, 12, 232, 63);
            }
    这样吗?那我button3_click里面就不用改了?我想在button3_click把图画出来