C# MetaFiles (WMF) обнаруживает разные размеры в двух разных приложениях

Я создал консольное приложение и MVC-веб-сайт. На обоих есть точный код загрузки метафайлов, таких как WMF.

Я хочу определить размер этих файлов.

System.Drawing.Image imgFile= System.Drawing.Image.FromFile(mfFile);
int pixelWidth = imgFile.Width;
int pixelHeight = imgFile.Height;

Мое консольное приложение определяет 1921x1081px (что правильно), а мое веб-приложение определяет 1025*769px.

Кто-нибудь знает, почему один и тот же файл имеет разные размеры в зависимости от приложения? введите здесь описание изображения

введите здесь описание изображения


person Cobi    schedule 22.02.2018    source источник
comment
При загрузке файла WMF всегда должен создаваться файл System.Drawing.Metafile. Это не то, что говорит вам отладчик, он показывает System.Drawing.Bitmap. Очевидно, вы загружаете что-то другое, чего не ожидали, поэтому получение непредсказуемой высоты/ширины является нормальным. Уделите больше внимания переменной mfFile.   -  person Hans Passant    schedule 22.02.2018
comment
Отредактировал мой пост с метафайловыми значениями   -  person Cobi    schedule 22.02.2018


Ответы (1)


Метафайлы не имеют такого же разрешения, как растровые изображения. Таким образом, вы можете просто игнорировать проблему, поскольку вы можете рисовать метафайлы любого размера.

Однако причина может заключаться в том, что ваша ОС, в которой выполняется консольное приложение, имеет пользовательскую настройку DPI (может быть, Windows настроила ее автоматически, например, если у вас есть монитор 4K). Попробуйте настроить сообщаемые размеры с помощью настроек DPI и посмотрите, получите ли вы тот же результат.

Читать фактические настройки не очевидно, но вы можете найти решение здесь: https://stackoverflow.com/a/31542085/5114784

person György Kőszeg    schedule 22.02.2018
comment
Я отредактировал свой пост со скриншотами из обоих приложений со значениями WMF-изображений. Я думаю, что 96 DPI в обоих приложениях как DefaultDPI. Я также проверил это с помощью связанного с вами решения. Оба SystemDPI равны 96. - person Cobi; 22.02.2018