C#使用BufferedGraphics实现GDI+双缓冲绘图

C#使用BufferedGraphics实现GDI+双缓冲绘图

ID:37709219

大小:165.00 KB

页数:9页

时间:2019-05-29

C#使用BufferedGraphics实现GDI+双缓冲绘图_第1页
C#使用BufferedGraphics实现GDI+双缓冲绘图_第2页
C#使用BufferedGraphics实现GDI+双缓冲绘图_第3页
C#使用BufferedGraphics实现GDI+双缓冲绘图_第4页
C#使用BufferedGraphics实现GDI+双缓冲绘图_第5页
资源描述:

《C#使用BufferedGraphics实现GDI+双缓冲绘图》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、使用双缓冲的图形可以减少或消除重绘显示图面时产生的闪烁。使用双缓冲时,更新的图形首先被绘制到内存的缓冲区中,然后,此缓冲区的内容被迅速写入某些或所有显示的图面中。显示图形的重写相对简短,这通常可以减少或消除有时在更新图形时出现的闪烁。    使用C#GDI+绘图,实现双缓冲绘图有几种方法,在这篇文章中,将介绍其中的一种——使用BufferedGraphics实现GDI+双缓冲绘图。    下面的代码示例演示如何使用 BufferedGraphics 对象绘制以下图形,这些图形使用几种类型的缓冲实现。单击窗体将启动或停止一个计时器,该计时器将引起绘制

2、更新。绘制更新使您可以观察双缓冲的效果。右击窗体将循环使用下列绘制模式:·对于 Form,直接绘制到 Handle。·对使用 OptimizedDoubleBuffer 控件样式的 OnPaint 方法进行重写,以进行绘制·对于不使用 OptimizedDoubleBuffer 控件样式的窗体方法,重写 OnPaint 方法以进行绘制。   在每种模式下都将绘制文本,以标识当前模式并描述按下每个鼠标按钮时发生的行为。usingSystem;usingSystem.ComponentModel;usingSystem.Drawing;usingSys

3、tem.Windows.Forms;namespaceBufferingExample{publicclassBufferingExample:Form{privateBufferedGraphicsContextcontext;privateBufferedGraphicsgrafx;privatebytebufferingMode;privatestring[]bufferingModeStrings={"DrawtoFormwithoutOptimizedDoubleBufferringcontrolstyle","DrawtoFormusi

4、ngOptimizedDoubleBufferingcontrolstyle","DrawtoHDCforform"};privateSystem.Windows.Forms.Timertimer1;privatebytecount;publicBufferingExample():base(){//ConfiguretheFormforthisexample.this.Text="Userdoublebuffering";this.MouseDown+=newMouseEventHandler(this.MouseDownHandler);thi

5、s.Resize+=newEventHandler(this.OnResize);this.SetStyle(ControlStyles.AllPaintingInWmPaint

6、ControlStyles.UserPaint,true);//Configureatimertodrawgraphicsupdates.timer1=newSystem.Windows.Forms.Timer();timer1.Interval=200;timer1.Tick+=newEventHandler(this.OnTimer);bufferingMode=2;

7、count=0;//RetrievestheBufferedGraphicsContextforthe//currentapplicationdomain.context=BufferedGraphicsManager.Current;//Setsthemaximumsizefortheprimarygraphicsbuffer//ofthebufferedgraphicscontextfortheapplication//domain.Anyallocationrequestsforabufferlarger//thanthiswillcreat

8、eatemporarybufferedgraphics//contexttohostthegraphicsbuffer.context.MaximumBuffer=newSize(this.Width+1,this.Height+1);//Allocatesagraphicsbufferthesizeofthisform//usingthepixelformatoftheGraphicscreatedby//theForm.CreateGraphics()method,whichreturnsa//Graphicsobjectthatmatches

9、thepixelformatoftheform.grafx=context.Allocate(this.CreateGra

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。