代码改变世界

C#学习笔记(十九):图形绘制进阶-图像(双倍缓冲)

2006-03-22 08:42  努力学习的小熊  阅读(3406)  评论(1编辑  收藏  举报

图像在GDI+中有很多用途。当然,可以在窗口中绘制图像,也可以用图像创建画笔(TextureBrush),再绘制用该图像填充的图形。

Image类在System.Drawing命名空间中。

图像另一个非常重要的用途是双倍缓冲的图形编程技巧。有时要创建的图形非常精细复杂,即使使用目前运行速度最快的机器,也需要很长时间才能绘制出来。观察图像在屏幕中一点一点地绘制出来,并不是一件令人愉快的事。这类应用程序有映射应用程序和复杂的CAD/CAM应用程序。在这个技巧中,并不在把图形绘制在窗口中,而是绘制到一个图像中。在完成了图像的绘制后,再把该图像绘制到窗口中。这个技巧就成为双倍缓冲。一些其他的绘制技巧还涉及到在多个图层上绘制,即首先绘制背景,再在背景的上面绘制对象,最后在对象的上面绘制文本。如果这个图形直接在屏幕上绘制,用户就会看到一个闪烁的效果。双倍缓冲可以消除这种闪烁效果。

Image本身是一个抽象类,它有两个子类:BitmapMetafile

Bitmap类用于一般的图像,有高度和宽度属性。下面的一个小例子就是从文件中加载一个Bitmap图像,并绘制它。也可以从该类中创建画笔,再使用该画笔创建一个钢笔,以绘制线条,也可以使用该画笔绘制文本。

位图有几个可能的来源。可以从文件中加载位图,位图也可以来自打开的流,还可以从另一个现有的图像中创建位图。位图可以创建为空白的图像,以便在其上绘制。在从文件中读取图像时,该图像可以是JPEGGIFBMP格式。

加载图像

使用纹理画笔进行绘图

使用钢笔绘制图像

使用图像绘制文本

未使用双倍缓冲

使用双倍缓冲
    例程下载