2

我對Android的MonoTouch/Mono有點新鮮。我在iOS和Android應用的平臺上工作,並且正在將我們的本機代碼移植到C#中。爲圖像創建一個通用類是否明智?

我們的應用程序顯示圖像。但在Mono中沒有常見的圖像類型。在Android的Mono中,一個選項使用Bitmap(不能被分類)或BitmapDrawable,在iOS中有UIImage

爲了讓應用程序中的某些代碼在各個平臺之間更加一致,在我看來,創建一個用於處理圖像的通用類是一個不錯的主意。該類基本上是相應「本地」類的外觀。我希望這個類具有的功能之一是從一個字節數組創建一個圖像對象。目前我的代碼如下所示(並且工作正常):

using System; 

#if ANDROID 
using Android.Graphics; 
using Android.Graphics.Drawables; 
#else 
using MonoTouch.UIKit; 
using MonoTouch.Foundation; 
#endif 

namespace OurCompany.Core 
{ 
#if ANDROID 
    public class Image : BitmapDrawable 
    { 
     public Image (byte[] bytes) : base(BitmapFactory.DecodeByteArray (bytes, 0, bytes.Length)) 
     { 

     } 
    } 
#else 
    public class Image : UIImage 
    { 
     public Image (byte[] bytes) : base(NSData.FromArray(bytes), 1) 
     { 

     } 
    } 
#endif 
} 

現在我想知道,使用此設置時可能遇到任何問題嗎?我想知道我是否可以預期任何性能,緩存或其他類似設置的問題。

回答

2

是的它是有道理的。儘管我個人更喜歡使用接口而不是使用#if的方法,但我發現接口在重構,測試等方面效果更好 - 而且當您移植到新平臺時,該方法可以更好地擴展(mac,winrt,wp等等)

只要你仔細設計你的接口,那麼你不應該遇到任何特定的性能問題 - 但是如果你發現你的代碼開始在像素數組級別工作,那麼你可能錯過了本機優化機會。

對於在類似區域的一些想法-drawing - 見弗蘭克對https://github.com/praeclarum/CrossGraphics

+0

有趣的圖書館工作,這CrossGraphics。它可能有我需要的一切和更多。將研究它:) – 2013-02-12 08:17:07

+0

請注意,IMO CrossGraphics也將從界面中受益:)但是,正如我媽媽所說,你不能讓所有的人都討好...並且你不能請一些人任何人的時間... ;) – Stuart 2013-02-12 09:11:45

相關問題