程序的功能是在相同的背景(复杂背景)绘制一组移动小球的图片,即在每幅图片上都画上一个小球,但位置不同。
我考虑的方法是,每次绘制新图片时,首先记录下绘制区域的背景颜色信息。下次绘制时,首先将上次的绘制区域用已经记录的背景覆盖,而不是重新载入整个背景。但是不知道如何实现,哪位高手能指点一下方法...下面是我写的代码
Image image = Image.FromFile("d:\\test.bmp"); //载入背景
Bitmap bitmap = new Bitmap(image,image.Width,image.Height);
Graphics g = Graphics.FromImage(bitmap);SolidBrush brush = new SolidBrush(Color.Black);
int i=0, dia = 10;
for(i=0;i<10;i++)
{
   //此处应添加用记录的背景信息擦除上次绘制小球的代码,如何实现
   g.FillEllipse(brush,i*10,i*10,dia,dia); //画小球
   boxPictrue.Image = bitmap; //显示结果
}

解决方案 »

  1.   

    你把背景和小球分开,用2个PIC画
      

  2.   

    将背景image对象保存起来,
    然后带背景和小球的图片从背景image产生。
      

  3.   

    你是说这样吧
    for(i=0;i<10;i++)
    {
       //每次画小球时重新生成背景Bitmap
       bitmap = new Bitmap(image,image.Width,image.Height); 
       g = Graphics.FromImage(bitmap);
       g.FillEllipse(brush,(int)x1,(int)y1,dia,dia);
       g.FillEllipse(brush,i*10,i*10,dia,dia); //画小球
       boxPictrue.Image = bitmap; //显示结果
    }
    这样实现的方法,绘制效率很低,整个画区都有闪烁
      

  4.   

    找到方法了,Bitmap.Clone()可以实现
    现在还有一个问题,我想对一个指定区域(如一个圆形)内的所有象素点取反色,如何实现比较好,有现成的方法可以调用吗