.NET: Что делает Graphics.DrawImageUnscaled?

Это малоизвестно , что если вы рисуете изображение, например:

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 , если не рисовать немасштабированное изображение?

Из MSDN

См. Также

14
задан Ian Boyd 9 November 2011 в 21:31
поделиться