快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

.NET Compact Framework的强盛二维图形引擎

简介
  对于移动设备而言,.NET Compact Framework 即使不是最佳的 API,也是极好的 API。它的图形引擎受到很大的限制,以便提高呈现速度和降低内存消耗。但是,它好像远远无法满意用户日益增长的对更好的图形体验的要求。尝试去获得 .NET Compact Framework 中的一些高级矢量图形呈现功能可能是一项乏味的任务。开发人员具有两个选择:

  1.求助于本机代码。例如,Pocket PC Game API 可能是一项不错的选择。它的性能令人印象深刻。有关具体信息,请参阅位于以下位置的一篇异常全面的文章:http://msdn.microsoft.com/mobility/samples/default.aspx?pull=/library/en-us/dnnetcomp/html/gmangame.asp。问题在于本机代码不支持矢量图形呈现,并且与某些设备不兼容。此外,它可能无法与 Pocket PC 仿真程序协同工作。您可以想象调试这样的程序有多么困难。

  2.请等待下一代移动图形引擎问世。据我所知,Windows CE 5 中将包含一个强盛的 Direct3D Mobile引擎。这对于移动游戏开发人员来说是一个好消息,但是 Direct3D 不适合于二维图形。它太复杂了,因而无法在一般应用程序中应用。

  我们所需要的是像 GDI+ 这样强盛而易于使用的二维图形引擎。因此,我从零开始开发 XrossOne GDI+ 项目。它完全是用 C# 托管代码编写的,不包含任何本机代码或不安全的代码。经过几个月的艰苦工作之后,我终于可以在本文开头提供可下载的原始版本。

开始工作
  从该项目一开始,我就一直铭记 XrossOne GDI+ 引擎应当对不同的手持设备和平台保持中立。结果,它可以与 Pocket PC、Windows CE、Smartphones、Windows .NET 和 Mono 兼容。您可以将同一个运行库复制到不同的目标,而它仍旧可以正常工作。

下表概括了总体体系结构。

      层             命名空间
  XrossOne GDI+ API       XrossOne.Drawing
  基于定点的二维图形引擎    XrossOne.DrawingFP
 16.16 定点计算引擎       XrossOne.FixedPoint

  XrossOne GDI+ 中有三个层。最低层为“16.16 定点计算引擎”。其中一个主类 ― MathFP ― 是从 Beartronics J2ME 库 改编而来的。一些函数已经进行了优化,其中包括 sqrt、atan 和 PointFP.Distancecalculation。在命名空间 XrossOne.FixedPoint 下面,有其他三个类:SingleFP、DoubleFP 和 MatrixFP。SingleFP 是一个用于 16.16 定点数的 Helper 类。它为在定点类型和标准类型(int、float、string)之间进行转变提供了方便。MatrixFP 是为定点二维变换编写的。因为定点计算的精度较低,所以级联变换可能会损失一些精确性。例如,在大多数情况下,两次求逆运算无法还原原始矩阵。DoubleFP 的存在是为了使该库完备,但尚未使用。

  “基于定点的二维图形引擎”是 XrossOne GDI+ 的内核。它实现了很多复杂的矢量图形算法,例如,反锯齿绘图、线帽/联接装饰、二维变换、渐变填充、Alpha 通道合成等等。这里可以找到本机 GDI+ 中的大多数高级功能。但是,您只应在少数情况下直接使用它,因为它的基于定点的接口对于程序员而言不够友好,但是不必过分担心这种情况。有一个封装良好的 API 可供使用。您可以在 XrossOne.Drawing 命名空间中找到它们。XrossOne.Drawing 中的类异常类似于 System.Drawing 中的类,不同之处在于每个类的末尾有一个字母“X”。例如,XrossOne.Drawing.PenX 类等效于 System.Drawing.Pen。有一个用于将 GDI+ 程序转变到 XrossOne GDI+ 的小窍门。在 using 节中,将 XrossOne GDI+ 类重命名为它们的等效类。例如:

using Pen = XrossOne.Drawing.PenX;
using LinearGradientBrush = XrossOne.Drawing. LinearGradientBrushX;
using Matrix = XrossOne.Drawing.MatrixX;

本新闻共5页,当前在第1页  1  2  3  4  5  

本新闻共2页,当前在第1页  1  2  


返回类别: 教程
上一教程: 使用.net Remtoing进行并行计算
下一教程: VB6 中使用错误处理对于速度的影响

您可以阅读与".NET Compact Framework的强盛二维图形引擎"相关的教程:
· 微软的Net Search 引擎内幕(转)
· 基于.Net Framework的N层分布式应用开发
· 关于微软的.NET Framework是一个半成品的言论!
· .NET Framework For Java Programmers ---3(Good)
· .NET Framework中使用XML Web Service(2)
    微笑服务 优质保证 索取样品