C# 通過GDI+雙緩衝解決繪圖閃爍的問題
阿新 • • 發佈:2019-01-05
總體思路:
把圖先畫在bitmap上,每次都通過drawimage將bitmap傳到顯示裝置,雙快取的graphics不用每次都create一個,這樣會閃爍,解決方法是定義一個全域性的BufferedGraphics graphBuffer,然後在每次畫的時候取緩衝區內的graphics。
具體步驟:
1. 定義一個全域性的BufferedGraphics graphBuffer,初始化語句為(寫在初始化函式內):
C# code?1 | graphBuffer = ( new BufferedGraphicsContext()).Allocate(Form1_Paint.CreateGraphics(), Form1_Paint |
Bitmap b = new Bitmap(this.DisplayRectangle.Width,this.DisplayRectangle.Height);
3. 新建Graphic與Bitmap繫結
Graphics g = Graphics.FromImage((System.Drawing.Image)b);
4. 繪圖,呼叫g繪圖即可,例如:5. 呼叫緩衝區內的Graphic,用於繪製Bitmap圖(需要先清空之前的畫布,最後需要Render):
Graphics diaplayGraphic= this.graphBuffer.Graphics;