bitmap - 为图像创建一个公共(public)类是否明智?

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

我对 Android 版 MonoTouch/Mono 有点陌生。我在 iOS 和 Android 应用程序平台上工作,并且正在将我们的 native 代码移植到 C#。

我们的应用程序显示图像。然而,在 Mono 中没有通用的图像类型。在 Android 的 Mono 中,一个选项是使用 Bitmap(不能子类化)或 BitmapDrawable,在 iOS 中,有 UIImage

为了使应用程序中的某些代码在跨平台上更加一致,在我看来,创建一个用于处理图像的通用类是个好主意。该类基本上是相应“ native ”类的外观。我希望此类具有的功能之一是从字节数组创建图像对象。目前我的代码如下所示(并且工作正常):

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
}

现在我想知道,使用此设置可能会遇到任何问题吗?我想知道这样的设置是否会带来性能、缓存或其他问题。

最佳答案

是的,这是有道理的。

虽然我个人更喜欢使用接口(interface)而不是使用 #if 的方法 - 我发现接口(interface)在重构、测试等方面效果更好 - 并且当您移植到新平台(mac、winrt、wp、等)

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

有关类似领域绘图的一些想法 - 请参阅 Frank 的工作 https://github.com/praeclarum/CrossGraphics

关于bitmap - 为图像创建一个公共(public)类是否明智?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14826772/

相关文章:

c# - 为我的自定义用户控件创建自定义工具箱图标

安卓:bitmapfactory.decodestream 返回 null

C++ Gdiplus 单色像素值

objective-c - 与 iOS 存储和同步图像

ios - 当 Xamarin.iOS 中显示软件键盘时如何向上移动布局

ios - PFObject 值可能没有类 : UIImage

android - 如何将Uri图像压缩为位图

xamarin.ios - 有 Monotouch Color Picker 控件吗?

ios - 如何将 UI ImageView 从一个 View Controller 传递到另一个? swift 3

iphone - 将 NSString 绘制到 UIImage