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