.NET Compact Framework 中的图形编程
更新:2007 年 11 月
您可以通过使用 .NET Compact Framework 来创建可靠而又富有视觉刺激性的应用程序。您还可以使用平台调用来从本机代码中获得特殊效果。在 .NET Compact Framework 2.0 版及更高版本中,您可以对 Direct3D 应用程序进行编程。有关 .NET Compact Framework 中的 DirectX 和 Direct3D 的更多信息,请参见 Windows Mobile DirectX 和 Direct3D。
在 .NET Compact Framework 中进行图形对象编程时,应注意以下几点:
.NET Compact Framework 不支持 GDI+。不支持几种执行复杂的绘图、填充和变换操作的 Graphics 类方法。不支持 Path、Arc、2-D 和 3-D。
不过,.NET Compact Framework 支持核心绘图基元及其相应的填充方法:Ellipse、Line、Image、Polygon、Rectangle、String 和 Region。
您可以为高分辨率的应用程序编写代码。有关高分辨率的更多信息,请参见如何:处理方向和分辨率更改。
只支持带色标的透明度。不支持 Alpha 混合,即源数据和背景色数据逐个像素混合。因此,SetColorKey 方法的 colorLow 和 colorHigh 参数必须是同一颜色。
.NET Compact Framework 和 .NET Framework 全功能版以不同的方式计算与已知颜色的比较。在 .NET Compact Framework 中,如果将某个已知颜色(如 Aquamarine)和一个与其具有相同 RGB 值的颜色(如 Aquamarine)进行比较,结果会发现两者相同。而在 .NET Framework 全功能版中,这两种颜色的计算结果是不同的,因为已知颜色中除了 RGB 值外,还包含标识信息。
您只能在 Form 或 Control 对象上使用 CreateGraphics 方法。
如果无法加载图像,则请确保 imgdecmp.dll 位于设备的 Windows 目录中。
Icon 的 Clone 和 FromHandle 方法可以在运行 Windows Mobile 5.0 版的设备上运行。.NET Compact Framework 支持高分辨率图标,但不支持增强色图标。
.NET Compact Framework 不支持渐变画笔。不过,可以与本机函数进行交互操作来实现渐变显示。有关示例,请参见如何:显示渐变填充。
提高绘图速度
以下编码做法可以在使用 Graphics 对象时提高绘图性能:
仅创建一个 Graphics 对象,或者使用 OnPaint 方法中的 PaintEventArgs 提供的对象。
绘制一个脱屏位图,然后立即将该位图绘制到显示屏上。有关代码示例,请参见如何:绘制后台图像。
仅重绘该图像已经更改的部分。
绘制相同大小的目标和源;尽可能避免拉伸。
通过跟踪需要重绘的项来最大限度地减少绘图数量。例如,当将光标拖过图像时,没有必要重绘整个图像,而只需重绘该图像上原来的光标位置覆盖的部分即可。