我先更换winform的背景图片,然后            Graphics g = this.CreateGraphics();
            Pen mypen = new Pen(Color.red);
            g.DrawEllipse(mypen, 0, 0, 329, 229);这样背景图片和绘的椭圆都能看到;
问题:
如何清除这个椭圆然后在画一个,例如
g.Clear();
Pen mypen2 = new Pen(Color.Black);
g.DrawEllipse(mypen2, 0, 0, 329, 229);
但C#中Clear(),必须要有参数Color,但那样就会覆盖背景图片,求解决方法
补充:由于某些原因,不能使用Refresh()这方法

解决方案 »

  1.   

    g.clear(BackColor)
    然后用g画图。注意,你一定要记得g.Dispose()!!!
      

  2.   

    这个你用变量控制一下就好了。
    甚至你可以控制  0, 0, 329, 229 的位置,形状
    你还可以画矩形,不规则图形。
    你多弄几个全局变量,在别的代码中控制全局变量,在OnPaint中只管读取变量画图就行。Color PenColor = Color.Red;
            protected override void OnPaint(PaintEventArgs e)
            {
                Graphics g = e.Graphics;
                Pen mypen = new Pen(PenColor);
                g.DrawEllipse(mypen, 0, 0, 329, 229);
                base.OnPaint(e);
            }        private void button1_Click(object sender, EventArgs e)
            {
                this.BackgroundImage = Image.FromFile(@"C:\Documents and Settings\Administrator\My Documents\My Pictures\电脑\17d8749e-c3ee-4cdb-9713-982fbad7fded.jpg");            PenColor = Color.Black;            return;
    }