.NET: Что делает Graphics.DrawImageUnscaled?
этоне очень известныйчто если вы рисуете изображение, например:
graphics.DrawImage(image, top, left);
изображение будет масштабировано. Это потому чтоDrawImage
смотрит на настройку dpi изображения (например, 72 dpi из фотошопа) и масштабирует изображение, чтобы соответствовать отображению назначения (обычно 96 dpi).
Если вы хотите нарисовать изображение без масштабирования, вы должны явно указатьDrawImage
размер изображения:
graphics.DrawImage(img, top, left, img.Width, img.Height);
Я знал это по многим годам программирования в GDI +. Тот же факт существует в .NETSystem.Drawing
Обертки вокруг GDI + - если вы хотите нарисовать немасштабированное изображение, вы должны заставить его масштабироваться до исходного размера.
Вот почему я был впечатлен, чтобы найтиDrawImageUnscaled
метод в .NET:
graphics.DrawImageUnscaled(img, top, left);
За исключением того, что изображение все еще масштабируется; делая его идентичным:
graphics.DrawImage(img, top, left);
и если вы хотите нарисовать немасштабированное изображение, вы должны продолжать звонить:
graphics.DrawImage(img, top, left, img.Width, img.Height);
Что подводит меня к моему вопросу: что делаетDrawImageUnscaled
если не нарисовать изображение немасштабированное?
Метод Graphics.DrawImageUnscaled (Image, Int32, Int32)
Рисует указанное изображение, используя его исходный физический размер в месте, указанном парой координат.
Метод Graphics.DrawImage (Image, Int32, Int32)
Рисует указанное изображение, используя его исходный физический размер, в месте, указанном парой координат.
Метод Graphics.DrawImage (Image, Int32, Int32, Int32, Int32)
Рисует указанное изображение в указанном месте и с указанным размером.
Смотрите такжеMSDN: Как: повысить производительность, избегая автоматического масштабирования