C#学习笔记(十九):图形绘制进阶-图像(双倍缓冲)
2006-03-22 08:42 努力学习的小熊 阅读(3406) 评论(1) 编辑 收藏 举报图像在GDI+中有很多用途。当然,可以在窗口中绘制图像,也可以用图像创建画笔(TextureBrush),再绘制用该图像填充的图形。
Image类在System.Drawing命名空间中。
图像另一个非常重要的用途是双倍缓冲的图形编程技巧。有时要创建的图形非常精细复杂,即使使用目前运行速度最快的机器,也需要很长时间才能绘制出来。观察图像在屏幕中一点一点地绘制出来,并不是一件令人愉快的事。这类应用程序有映射应用程序和复杂的CAD/CAM应用程序。在这个技巧中,并不在把图形绘制在窗口中,而是绘制到一个图像中。在完成了图像的绘制后,再把该图像绘制到窗口中。这个技巧就成为双倍缓冲。一些其他的绘制技巧还涉及到在多个图层上绘制,即首先绘制背景,再在背景的上面绘制对象,最后在对象的上面绘制文本。如果这个图形直接在屏幕上绘制,用户就会看到一个闪烁的效果。双倍缓冲可以消除这种闪烁效果。
Image本身是一个抽象类,它有两个子类:Bitmap和Metafile。
Bitmap类用于一般的图像,有高度和宽度属性。下面的一个小例子就是从文件中加载一个Bitmap图像,并绘制它。也可以从该类中创建画笔,再使用该画笔创建一个钢笔,以绘制线条,也可以使用该画笔绘制文本。
位图有几个可能的来源。可以从文件中加载位图,位图也可以来自打开的流,还可以从另一个现有的图像中创建位图。位图可以创建为空白的图像,以便在其上绘制。在从文件中读取图像时,该图像可以是JPEG,GIF或BMP格式。
加载图像
使用纹理画笔进行绘图
使用钢笔绘制图像
使用图像绘制文本
未使用双倍缓冲
使用双倍缓冲
例程下载