Я хочу написать функцию, которая получит в качестве входной строки fileName и вернет объект ImageDrawing .
Я не хочу загружать растровое изображение с диска вэта функция.Вместо этого я хочу провести какую-то ленивую оценку.Чтобы узнать размеры, я использую класс Bitmap .
В настоящее время у меня есть этот код:
public static ImageDrawing LoadImage(string fileName)
{
System.Drawing.Bitmap b = new System.Drawing.Bitmap(fileName);
System.Drawing.Size s = b.Size ;
System.Windows.Media.ImageDrawing im = new System.Windows.Media.ImageDrawing();
im.Rect = new System.Windows.Rect(0, 0, s.Width, s.Height);
im.ImageSource = new System.Windows.Media.Imaging.BitmapImage(new Uri(fileName, UriKind.Absolute));
return im;
}
- Является ли вызов System.Drawing.Bitmap конструктор ленивый?
- Является ли вызов .Size ленивым?
- Является ли BitmapImage конструктор ленивым?
- Есть ли какой-нибудь другой способ, которым я могу реализовать это, чтобы быть полностью ленивым?
Редактировать: Есть много хороших ответов, которые могут быть полезны для сообщества - использовать класс Lazy и открыть его с помощью Task .
Тем не менее, я хочу поместить ImageDrawing в DrawingGroup и сериализовать впоследствии, так что Lazy , а также Task - этоне вариант для меня.