У меня есть открытый статический метод, который возвращает изображение с замененным цветом (я пропускаю черное изображение, и он возвращает то же изображение с красным, а не черным, или любым цветом, который я выбираю).Должен ли я использовать общедоступные статические поля для изображений и цветов?
Это выглядит следующим образом:
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;
Или что-то вдоль этих линий. Это приложение для iOS, использующее Xamarin. Есть ли проблема с этим? Думал, что это может даже ускорить загрузку некоторых из наших списков, потому что они не захватывают изображения и не обрабатывают их цвет снова и снова.
Изображения используются во всем приложении, как и в одно изображение несколько раз, даже на том же экране. Сейчас он окрашивает изображение снова и снова, в случае списка. Я не знаю, оптимизирует ли ios это, используя одно и то же изображение, или если он каждый раз захватывает изображение с диска ... Я бы предпочел пожертвовать небольшим объемом памяти для изображения для повышения производительности – aufty
, если это случай, лучший подход, на мой взгляд, был бы следующим: создать синглтон, каждый раз, когда будет доступна только одна обработка изображений, как только изображение будет готово, сохраните его в словаре <Цвет, UIImage>, в следующий раз, когда singlton будет запущен будет искать этот образ, если он существует, возьмите его - иначе, создайте новый. Таким образом, у вас всегда будут только данные, которые вы используете по требованию, а не только для создания различных изображений, таких как рулетка. – Tomerz