解决方案 »

  1.   

    1、告诉pictureBox在显示图片后,还要进行‘后期’绘画,这里可以用pictureBox的Paint事件。
    2、使用一个标志,来指示是否在‘后期’绘画中加网格线。
    3、如果标志改变,要求pictureBox进行刷新,以显示最新变动。
    4、画网格线可以用Graphics.DrawLine。
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.pictureBox1.Paint += pictureBox1_Paint;   // 1
        }    void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            if (!this.gridVisible) return;        Rectangle rect = this.pictureBox1.ClientRectangle;
            float gridWidth = (rect.Width - 1f) / (gridLines - 1);
            float gridHeith = (rect.Height - 1f) / (gridLines - 1);
            for(int i = 0; i < gridLines; i++)  // 4
            {
                e.Graphics.DrawLine(Pens.Red, rect.Left, gridHeith * i, rect.Right, gridHeith * i);
                e.Graphics.DrawLine(Pens.Red, gridWidth * i, rect.Top, gridWidth * i, rect.Bottom);
            }
        }    bool gridVisible = true;
        const int gridLines = 4;
        private void button1_Click(object sender, EventArgs e)
        {
            gridVisible = !gridVisible;   // 1
            this.pictureBox1.Invalidate();  // 2
        }
    }
      

  2.   

            gridVisible = !gridVisible;   // 2
            this.pictureBox1.Invalidate();  // 3
      

  3.   

    对ls代码提一点改进
    bool gridVisible = true;
    这个可以定义一个属性:
    public bool ShowGridLine
    {
        get { return gridVisible; }
        set { gridVisible = value; }
    }
      

  4.   

    然后在set方法里判断value是否变化,没变化不重新赋值,变化了就刷新picture