.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 值外,还包含标识信息。

  • .NET Compact Framework 不支持使用现有的 Font 对象的 Font 类的构造函数。

  • 您只能在 FormControl 对象上使用 CreateGraphics 方法。

  • 如果无法加载图像,则请确保 imgdecmp.dll 位于设备的 Windows 目录中。

  • IconCloneFromHandle 方法可以在运行 Windows Mobile 5.0 版的设备上运行。.NET Compact Framework 支持高分辨率图标,但不支持增强色图标。

  • .NET Compact Framework 不支持渐变画笔。不过,可以与本机函数进行交互操作来实现渐变显示。有关示例,请参见如何:显示渐变填充

提高绘图速度

以下编码做法可以在使用 Graphics 对象时提高绘图性能:

  • 仅创建一个 Graphics 对象,或者使用 OnPaint 方法中的 PaintEventArgs 提供的对象。

  • 绘制一个脱屏位图,然后立即将该位图绘制到显示屏上。有关代码示例,请参见如何:绘制后台图像

  • 仅重绘该图像已经更改的部分。

  • 绘制相同大小的目标和源;尽可能避免拉伸。

  • 通过跟踪需要重绘的项来最大限度地减少绘图数量。例如,当将光标拖过图像时,没有必要重绘整个图像,而只需重绘该图像上原来的光标位置覆盖的部分即可。

请参见

其他资源

.NET Compact Framework 中的 Mobile Direct3D 编程

.NET Compact Framework 中的互操作性

.NET Compact Framework 中的图形和绘图