C#.net picturebox動畫效果,重新整理影象的閃爍問題解決方法
阿新 • • 發佈:2018-12-30
在.net的控制元件上用timer控制重新整理影象,可以形成動畫效果,但是有個問題就是會閃爍。
比如picturebox控制元件名字是picshow,我們要重新整理picshow的影象,一般是怎麼做呢?
一般是用Graphics物件的clear來清除,然後將要畫的東西一點點畫上去。這樣的方法中間存在一個clear過程,導致會有一瞬間的閃爍。
一個簡單的解決方法是不用clear:先建立點陣圖,然後將要畫的東西畫到點陣圖上,最後把點陣圖整個畫到picshow上。這樣子會好很多。
下面給一段示例程式碼
public void GameShow() //畫出遊戲畫面 { //建立點陣圖 Bitmap bmp = new Bitmap(600, 600);//點陣圖大小600*600 //建立點陣圖的Graphics物件 Graphics gr1 = Graphics.FromImage(bmp); //將點陣圖清黑 gr1.Clear(Color.Black); //在點陣圖上畫出要畫的東西 if (myBall != null) { myBall.Show(gr1); } for (int i = 0; i < bullnum; i++) { if (bull[i] != null) bull[i].Show(gr1); } if (a != null) { a.Show(gr1); } //建立Picshow的Graphics物件 Graphics gr2 = PicShow.CreateGraphics(); //將bmp畫到picshow上 gr2.DrawImage(bmp, 0, 0); //釋放記憶體!!這一步必須要,不然記憶體會爆炸的 bmp.Dispose(); bmp = null; gr1.Dispose(); gr1 = null; gr2.Dispose(); gr2 = null; }