GDI+ 小破孩动画

mac2022-06-30  95

无聊写个动画程序,GDI+ 双缓存,无法去除背景色,不知道为什么?

知道的,麻烦告诉我一下

代码  1  namespace  Animation  2  {  3       public   partial   class  Form1 : Form  4      {  5           private  Rectangle drawArea;  6           private  Bitmap currentShape;  7           private   static  Graphics buffScreenGraphics, onScreenGraphics;  8           private   static   int  currentShapeIndex  =   0 ;  9           private   static  Bitmap buffScreenBitmap; 10  11           public  Form1() 12          { 13              InitializeComponent(); 14              Init(); 15          } 16  17           private   void  Init() 18          { 19               this .Visible  =   true ; 20              drawArea  =   new  Rectangle( 0 0 150 130 ); 21              onScreenGraphics  =   this .CreateGraphics(); 22              buffScreenBitmap  =   new  Bitmap(drawArea.Width, drawArea.Height); 23              buffScreenGraphics  =  Graphics.FromImage(buffScreenBitmap); 24              buffScreenGraphics.Clear(Color.Green); 25  26              SpriteList.Instance.LoadSprites(); 27  28              currentShape  =  SpriteList.Instance.Sprites[currentShapeIndex]; 29              buffScreenGraphics.DrawImage(currentShape, 0 , 0 ,currentShape.Width,currentShape.Height); 30          } 31  32           protected   override   void   OnPaint(PaintEventArgs e) 33          { 34              onScreenGraphics.DrawImage(buffScreenBitmap, drawArea); 35                base .OnPaint(e); 36          } 37  38           private   void  ReDraw() 39          { 40              onScreenGraphics.DrawImage(buffScreenBitmap, drawArea); 41          } 42  43           private   void  DoNextShape() 44          { 45              currentShapeIndex  =  currentShapeIndex  ==   7   ?   0  : currentShapeIndex  +   1 ; 46              buffScreenBitmap  =  SpriteList.Instance.Sprites[currentShapeIndex]; 47          } 48  49           private   void  timer1_Tick( object  sender, EventArgs e) 50          { 51              DoNextShape(); 52              ReDraw(); 53               this .Left  -=   10 ; 54                if  ( this .Left  <   - this .Width) 55                    this .Left  =  Screen.PrimaryScreen.Bounds.Width; 56          } 57  58           private   void  Form1_KeyPress( object  sender, KeyPressEventArgs e) 59          { 60                if  (e.KeyChar  ==   27 ) 61                    this .Dispose(); 62          } 63      } 64  }

 

 

源文件

转载于:https://www.cnblogs.com/Kurodo/archive/2009/04/28/1444950.html

相关资源:c# GDI 完整例子
最新回复(0)