C # Почему некоторые растровые изображения изменяются после копирования с использованием GDI +? - PullRequest
0 голосов
/ 21 сентября 2011

У меня есть переменная Bitmap, и я копирую меньшие файлы размером 32x32 png (загруженные как растровые изображения) в растровое изображение.Тем не менее, некоторые png-файлы масштабируются (всегда одни и те же) и выглядят как 36x36, например, после копирования.Почти как если бы у некоторых PNG был другой DPI или что-то еще?Как я могу предотвратить это?

   Graphics g = Graphics.FromImage(destinationImage);
   g.DrawImage(sourceImage, location); // sourceImage is sometimes larger than it actually is. On disk it is 32x32 but after copying it might be bigger...
   g.Dispose();

Ответы [ 2 ]

1 голос
/ 21 сентября 2011

Значение свойства Image.Hor Horizontal / VerticalResolution.Если он не соответствует настройке точек на дюйм вашего монитора, изображение будет отображаться пропорционально больше или меньше.Как правило, это нежелательно, используйте перегрузку DragImage (Image, Rectangle), чтобы заставить ее отображать с точностью 32 x 32 пикселя.

1 голос
/ 21 сентября 2011

Полагаю, вы правы в отношении DPI, как указано в документации:

Этот метод рисует изображение, используя его физический размер ...

Мне лень создавать тестовый проект, но я думаю, что Graphics.DrawImage (Image, Rectangle) с размером прямоугольника, равным размеру исходного изображения, решит вашу проблему.

...