人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

.NET Compact Framework的強大二維圖形引擎

.NET Compact Framework的強大二維圖形引擎

更新時間:2022-09-01 文章作者:未知 信息來源:網絡 閱讀次數:

簡介
  對于移動設備而言,.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;


[1] [2] [3] [4] [5]  下一頁

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 钦州市| 临沂市| 湖南省| 宝丰县| 阿图什市| 马公市| 柘城县| 兴隆县| 法库县| 青河县| 衡东县| 井陉县| 旬邑县| 禄劝| 邵阳县| 红原县| 岑溪市| 时尚| 托克逊县| 宁城县| 内黄县| 汝南县| 金堂县| 阜南县| 上犹县| 咸阳市| 大余县| 富川| 福安市| 丰城市| 柞水县| 永善县| 台南县| 合肥市| 库尔勒市| 车致| 海盐县| 綦江县| 宜兰市| 蓬溪县| 石渠县|