私は、色の置き換えられたイメージを返すパブリックな静的メソッドを持っています(黒いイメージを渡し、同じイメージを黒の代わりに赤で返します)。イメージとカラーにpublic staticフィールドを使用する必要がありますか?
それは次のようになります。
public class ColorImage
{
public static UIImage GetColoredImage(UIImage image, UIColor color)
{
UIImage coloredImage = null;
if (color == null)
{
color = UIColor.FromRGB(44, 132, 248);
}
UIGraphics.BeginImageContextWithOptions(image.Size, false, UIScreen.MainScreen.Scale);
using (CGContext context = UIGraphics.GetCurrentContext())
{
context.TranslateCTM(0, image.Size.Height);
context.ScaleCTM(1.0f, -1.0f);
var rect = new RectangleF(0, 0, (float)image.Size.Width, (float)image.Size.Height);
context.ClipToMask(rect, image.CGImage);
context.SetFillColor(color.CGColor);
context.FillRect(rect);
coloredImage = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
}
return coloredImage;
}
}
私は同僚と話していたし、我々はイメージ(色と色ではなく)を格納するために、より良いかもしれないと思った、と私たちは公共の場で私たちのアプリケーション全体で使用する予定の色静的フィールド。
Textfield.BackgroundColor = ColorCache.MainColor;
Textfield.Image = ImageCache.UserImage;
をまたはそれらの線に沿って何か:私はこれらの色やイメージの1つを使用するために必要であればそのように、私はちょうど呼び出すことができます。これは、Xamarinを使用しているiOSアプリ向けです。このようにすることに問題はありますか?画像をつかんで色を何度も何度も処理していないので、リストビューの読み込み速度が速くなることも考えられます。
場合は、私の意見では、より良いアプローチは: シングルトンを作成するたびに1つの画像処理が利用可能になる、一度画像は、辞書<色、UIImage>、それを維持する準備ができて、それが存在すればそのイメージを探し、そうでなければ新しいイメージを生成します。 そのようにすれば、ルーレットのような様々な画像を作成するだけでなく、いつでも「オンデマンド」で使用するデータだけが得られます。 – Tomerz