C#学习笔记(十九):图形绘制进阶-图像(双倍缓冲)
2006-03-22 08:42
537 查看
图像在GDI+中有很多用途。当然,可以在窗口中绘制图像,也可以用图像创建画笔(TextureBrush),再绘制用该图像填充的图形。
Image类在System.Drawing命名空间中。
图像另一个非常重要的用途是双倍缓冲的图形编程技巧。有时要创建的图形非常精细复杂,即使使用目前运行速度最快的机器,也需要很长时间才能绘制出来。观察图像在屏幕中一点一点地绘制出来,并不是一件令人愉快的事。这类应用程序有映射应用程序和复杂的CAD/CAM应用程序。在这个技巧中,并不在把图形绘制在窗口中,而是绘制到一个图像中。在完成了图像的绘制后,再把该图像绘制到窗口中。这个技巧就成为双倍缓冲。一些其他的绘制技巧还涉及到在多个图层上绘制,即首先绘制背景,再在背景的上面绘制对象,最后在对象的上面绘制文本。如果这个图形直接在屏幕上绘制,用户就会看到一个闪烁的效果。双倍缓冲可以消除这种闪烁效果。
Image本身是一个抽象类,它有两个子类:Bitmap和Metafile。
Bitmap类用于一般的图像,有高度和宽度属性。下面的一个小例子就是从文件中加载一个Bitmap图像,并绘制它。也可以从该类中创建画笔,再使用该画笔创建一个钢笔,以绘制线条,也可以使用该画笔绘制文本。
位图有几个可能的来源。可以从文件中加载位图,位图也可以来自打开的流,还可以从另一个现有的图像中创建位图。位图可以创建为空白的图像,以便在其上绘制。在从文件中读取图像时,该图像可以是JPEG,GIF或BMP格式。
加载图像
使用纹理画笔进行绘图
使用钢笔绘制图像
使用图像绘制文本
未使用双倍缓冲
使用双倍缓冲
例程下载
Image类在System.Drawing命名空间中。
图像另一个非常重要的用途是双倍缓冲的图形编程技巧。有时要创建的图形非常精细复杂,即使使用目前运行速度最快的机器,也需要很长时间才能绘制出来。观察图像在屏幕中一点一点地绘制出来,并不是一件令人愉快的事。这类应用程序有映射应用程序和复杂的CAD/CAM应用程序。在这个技巧中,并不在把图形绘制在窗口中,而是绘制到一个图像中。在完成了图像的绘制后,再把该图像绘制到窗口中。这个技巧就成为双倍缓冲。一些其他的绘制技巧还涉及到在多个图层上绘制,即首先绘制背景,再在背景的上面绘制对象,最后在对象的上面绘制文本。如果这个图形直接在屏幕上绘制,用户就会看到一个闪烁的效果。双倍缓冲可以消除这种闪烁效果。
Image本身是一个抽象类,它有两个子类:Bitmap和Metafile。
Bitmap类用于一般的图像,有高度和宽度属性。下面的一个小例子就是从文件中加载一个Bitmap图像,并绘制它。也可以从该类中创建画笔,再使用该画笔创建一个钢笔,以绘制线条,也可以使用该画笔绘制文本。
位图有几个可能的来源。可以从文件中加载位图,位图也可以来自打开的流,还可以从另一个现有的图像中创建位图。位图可以创建为空白的图像,以便在其上绘制。在从文件中读取图像时,该图像可以是JPEG,GIF或BMP格式。
加载图像
使用纹理画笔进行绘图
使用钢笔绘制图像
使用图像绘制文本
未使用双倍缓冲
使用双倍缓冲
例程下载
相关文章推荐
- C# 学习笔记一(图形绘制基础1 GDI+)
- C#学习笔记之使用GDI绘制简单的图形
- C# 学习笔记二(图形绘制基础2 常用画图对象)
- C#学习笔记 :图形绘制基础
- OpenGL_Qt学习笔记之_02(绘制简单平面几何图形)
- C#实现在图像中绘制文字图形的方法
- C#学习笔记:GDI图形高级编程(1)——如何将图形画到控件上
- 马哥学习笔记十九——MySQL进阶之备份和还原
- opencv学习笔记12 图像轮廓的提取和绘制
- canvas学习笔记:绘制各种图形
- c# opencvsharp学习笔记(3)兴趣区域ROI,图像叠加,操作像素点
- OpenGL_Qt学习笔记之_02(绘制简单平面几何图形)
- OpenCV学习笔记09--通过cvPtr2D或指针算法绘制图形
- 自定义View学习笔记04—Canvas的绘制图形
- 【Cocos2d-X开发学习笔记】第10期:渲染框架之几何图形的绘制
- 【Cocos2d-X开发学习笔记】第10期:渲染框架之几何图形的绘制DrawPrimitives
- HTML5制作坦克大战游戏+Canvas绘制基础图形——学习笔记一
- libgdx 学习笔记二 绘制图像
- PHP学习笔记十三之图形图像操作(进阶篇)
- 学习笔记:HTML5 Canvas绘制简单图形