не известно, что если вы рисуете изображение, например:
graphics.DrawImage(image, top, left);
изображение будет масштабировано. Это связано с тем, что DrawImage
смотрит на настройки dpi (например, 72dpi из фотошопа) и масштабирует изображение в соответствии с отображением адресата (обычно 96 точек на дюйм).
Если вы хотите нарисовать изображение без какого-либо масштабирования, вы должны явно указать 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(изображение, Int32, Int32)
Рисует указанное изображение с использованием его исходного физического размера в месте, заданном координатной парой.
-
Метод Graphics.DrawImage(изображение, Int32, Int32)
Рисует указанное изображение, используя его оригинальный физический размер, в местоположении, заданном координатной парой.
-
Метод Graphics.DrawImage(изображение, Int32, Int32, Int32, Int32)
Рисует указанное изображение в указанном месте и с указанным размером.