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

2016-01-29 13:38 5 1 收藏

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

【 tulaoshi.com - ASP.NET 】

简介
  对于移动设备而言,.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;

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

来源:http://www.tulaoshi.com/n/20160129/1490950.html

延伸阅读
标签: Web开发
分析属性值 大部分情况下,属性值都是一个简单的文本字符串。然而,这并不意味着实际应用中的属性值都是字符型的。有时候,属性值是由许多种类型的数据组合而成的,例如Date或Boolean,这时,你就要用XmlConvert或System.Convevt类的方法把这些类型转换成原来的类型。XmlConvert和System.Convevt类都能实现数据类型的转换,但是XmlConv...
标签: autocad教程
本题主要运用的是设置轮廓命令,将三维模型投影到二维平面! [next] [next] [next] [next] [next]
标签: autocad教程
目前二维图形在工程设计,生产制造和技术交流中起着很重要的作用,但有很多场合,需要再通过实体造型来分析产品的动态特性、直观地表达设计效果、构造动画模型等。因此,三维造型设计是现代设计重要的手段之一。 1 三维建模方法     创建三维模型时,首先对模型的结构进行分析,选择最佳的建模方案,建立构成模型的各个简单实体...
标签: 软件教程
你还在让别人加你群输qq群账号你就OUT了,新版的qq以及可以扫二维码,那么也就是说你的qq群也可以建立一个二维码,好友加你的群就不需要再复杂的输qq群账号了,那qq群二维码怎么生成呢?看看小编给大家的介绍吧! 第一步:先打开我们的手机上找到群 第二步:找到我们要生成的那个qq群 第三步:进入群,在...
现如今,二维码的使用已经逐渐走入日常生活,可以用来商品比价,也可以获得商品信息,二维码识别等等。快拍二维码就是为大家提供了手机二维码和条形码扫码解码软件,可以快速扫描识别出二维码内的信息。那么快拍二维码怎么使用? 软件名称: 快拍二维码 V2.28 二维码扫描软件 for android(安卓)版 二维码识别软件 软件大小: 6.3MB ...

经验教程

859

收藏

61
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部