为图像创建一个公共类是否明智?

时间:2013-02-12 06:30:54

标签: bitmap xamarin.ios uiimage xamarin.android android-drawable

我对MonoTouch / Mono for Android有点新鲜。我在iOS和Android应用程序的平台上工作,我正在将我们的本机代码移植到C#。

我们的应用会显示图片。但是在Mono中没有常见的图像类型。在Mono for Android中,一个选项是使用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
}

现在我想知道,使用此设置可能遇到任何问题吗?我想知道我是否可以期待任何性能,缓存或其他类似设置的问题。

1 个答案:

答案 0 :(得分:2)

是的,这是有道理的。

虽然我个人更喜欢使用界面而不是使用#if的方法 - 我发现界面在重构,测试等方面效果更好 - 而且当你移植到新平台时,这种方法可以更好地扩展(mac,winrt,wp,等)

只要您仔细设计界面,就不应该遇到任何特定的性能问题 - 但是如果您发现代码开始在像素阵列级别工作,那么您可能会错过原生优化机会。 / p>

对于类似领域的一些想法 - 绘制 - 请参阅Frank在https://github.com/praeclarum/CrossGraphics

上的工作