好看的图形如同一件设计完美的艺术品一样:这意味着技术和设计是同等重要的。在一个屏幕上画一个单个举行或者一个单一的文本片段将运行足够快。在视觉屏幕取画一个复杂的图形或者一个“正在飞行”的游戏图板很可能会导致质量很差的用户体验。考虑一下画复杂的图标实例需要用1.5秒时间的情况,这个时间超出了人的最小反应时间,人的视力可以识别在这个时间间隔内发生的离散事件。比如画一个图标,绘制过程包括画一个背景图像,绘制图标的轴,在图标上画线,在实际数据所指的地方画上小点,生成代表每个数据系列的颜色列表,如果在用户面前这样做,结果是导致非常混乱的视觉效果。如果目标是为静态游戏制作,结果更糟糕:在这个实例中,当食物在屏幕上移动和显示时,用户将会感到剧烈的闪烁。 不在用户的视觉内画图的第二个理由是,用户界面位图空间是易变的。与代码属于自身屏幕外位图不同,屏幕上的空间是所有正在运行的应用的窗口和控件以及操作系统共享的资源。许多操作系统并不维护可能画到用户界面的图像。如果另一个应用的对话框出现在你的代码绘画的窗口之前,这意味着你将失去所画的任何图像。
审美效果更好并且几乎不会出错的方法是,在屏幕外缓冲区绘制图形,当绘制完成后再将结果拷贝到前台。这种方法也是可以只的俄日期俄容易设计,管理和调试。这样不需要学习错综复杂的操作系统的绘画模式,你的应用可以在它自己的易于理解的环境中完成绘画,同时只有当工作完成时,才输出到用户界面。一个屏幕外绘画方法几乎总是用于任何复杂图标擦欧洲哦的最好方法,接管当图像正在处理时,你需要一个等待光标。
.NET CF有两种把屏幕外绘画一道用户界面的方法。第一种使用一个PictureBox控件,并用你刚刚绘制完成的位图设置它的Image属性。
第二种方法是从用户界面元素获得Graphic对象,并调用Graphic.DrawImage()完成图像转移:
特别值得注意对于Graphics.DrawImage()有几个重载放阿飞可以使用。上面所列举的是最简单和最快的方法;它只需要从一个位图获得数据,同时它们拷贝到另一个位图中。其他的重载