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