我用C#写了一个波形显示的界面,用picturebox控件来显示波形,但是当picturebox被弹出的子窗口覆盖后,原来的图就像被擦去了一样。我将绘图函数在picturebox_paint事件函数中重写后,只有改变主界面的大小后才会重绘(重写Paint()也是如此),实在没办法了,谁能帮帮我?

解决方案 »

  1.   

    你是直接在picturebox上画图么?如果是的改为在一个bitmap上画图然后把bitmap赋给picturebox
      

  2.   

    例如
      private void Form1_Load(object sender, EventArgs e)
       {
       Bitmap bmpScreenShot = new Bitmap(800, 600);
       }   private void pictureBox1_Paint(object sender, PaintEventArgs e)
       {
       Graphics gfx = Graphics.FromImage((Image)bmpScreenShot);
       gfx.DrawEllipse(new Pen(Color.Red, 5), this.Left, this.Top, 100, 100);
       pictureBox1.Image = bmpScreenShot;
       }
      

  3.   


    子窗口关闭后,调用一下PictrueBox的Refresh()
      

  4.   

    用GDI+画图的话直接在Form上画或者搞个panel什么的当画板,干嘛搞个picturebox.
      

  5.   

    我是个菜鸟,想画图一打开工具箱就把picturebox拉来啦。那用你说的panel画图和用picturebox画图的操作一样吗?有哪些区别啊?
      

  6.   

    把画的图给到一个Image对象,然后把它赋给PicBox.Image