graphics 画图闪烁的问题
graphics画矩形,用timer事件画的,然后都refresh,矩形多了闪烁,怎么解决?
------解决方案--------------------Dim bmp As New Bitmap(Width, Height) 
 Dim g As Graphics = Graphics.FromImage(bmp)   
 g.DrawRect1(……) 
 g.DrawRect2(……) 
 g.DrawRect3(……)   
 PictureBox1.CreateGraphics.DrawImage(bmp, 0, 0)   
 这么处理一下好点
------解决方案--------------------Bitmap bit=null; 
 bit=new Bitmap(   ,   ); 
 Graphics g= Graphics.FromImage(b2); 
 g.Clear(Color.White);   
 g.Draw............... 
 Graphics g = Graphics.FromHwnd(this.Handle); 
 g.DrawImage(b0,10,10); 
------解决方案--------------------利用GDI+的双缓冲技术来提高绘图效率 
  1、在内存中建立一块“虚拟画布”:   
 Bitmap bmp = new Bitmap(600, 600);   
   2、获取这块内存画布的Graphics引用:   
 Graphics g = Graphics.FromImage(bmp);   
   3、在这块内存画布上绘图:   
 g.FillEllipse(brush, i * 10, j * 10, 10, 10);   
   4、将内存画布画到窗口中   
 this.CreateGraphics().DrawImage(bmp, 0, 0);   
 绝对可行的~试过了~
------解决方案--------------------//private void panel1_Paint(object sender, PaintEventArgs e) 
 //{   
 //Bitmap bmp = new Bitmap(300, 450); 
 //Graphics gra = Graphics.FromImage(bmp); 
 // Graphics gra = this.panel1.CreateGraphics(); 
 //for (int i = 0; i  < rectangles.Count; i++) 
 //{ 
 //gra.DrawRectangle(new Pen(Color.Black, 1), rectangles[i]); 
 //} 
 //this.panel1.CreateGraphics().DrawImage(bmp, 0, 0); 
 //}   
 private void timer1_Tick(object sender, EventArgs e) 
 { j++; 
 y+=30; 
 Rectangle rec = new Rectangle(x, y, 30, 30); 
 rectangles.Add(rec); 
 if (rectangles.Count >  j + 1) 
 { 
 rectangles.RemoveAt(j); 
 }     
 //this.panel1.Invalidate();   
 Bitmap bmp = new Bitmap(300, 450); 
 Graphics gra = Graphics.FromImage(bmp); 
 // Graphics gra = this.panel1.CreateGraphics(); 
 for (int i = 0; i  < rectangles.Count; i++) 
 { 
 gra.DrawRectangle(new Pen(Color.Black, 1), rectangles[i]); 
 } 
 this.panel1.CreateGraphics().DrawImage(bmp, 0, 0);   
 }