Значения возвращаемый BitmapSource.Width
и BitmapSource.Height
не в пикселях, а аппаратно-независимые единицы WPF в, которые всегда 96 точек на дюйм , Например:
Получает ширину растрового изображения в устройствах, не зависящих от устройства (1/96-й дюйм на устройство).
Если вы хотите узнать фактическую ширину пикселей и высоту, вы должны использовать PixelWidth
и PixelHeight
свойства.
Ваш вопрос не очень конкретный, но если вы действительно обеспокоены наличием растрового дисплея того же размера, в котором он был создан, самым простым решением является удостовериться, что вы его создаете с разрешением 96 точек на дюйм. Любая программа, которую вы используете для создания растрового изображения, вероятно, имеет место, где вы можете установить растровое разрешение. Обычно это может быть задано с или без изменения размеров изображения изображения (то есть масштабирование изображения больше или меньше); вы хотите сделать это без масштабирования изображения, так что размеры пикселей остаются теми же, но изменения dpi изменяются в соответствии с тем, что использует WPF.
Обратите внимание, что это все равно не гарантирует отображение растровых изображений с определенным размером пикселя. Разрешение экрана может быть и часто отличается от 96 dpi, и в этом случае WPF будет масштабировать изображения, чтобы гарантировать, что физические размеры изображения (т. Е. Размеры в дюймах, миллиметры и т. Д.) Являются правильными в соответствии с информацией в растровом изображении , Например, ширина экрана 960 пикселей с разрешением 96 точек на дюйм имеет ширину 10 дюймов. На дисплее с разрешением 120 точек на дюйм это означает, что битмап достаточно большой, так что его ширина использует 1200 пикселей дисплея.
Если вы хотите или хотите, чтобы растровое изображение отображалось с точно таким же количеством отображаемых пикселей независимо от разрешения экрана, вам нужно будет установить преобразование, где вы показываете изображение, чтобы отменить эффект масштабирования, который WPF в противном случае. Конечно, это требует знания разрешения экрана.
Вот некоторые другие связанные с переполнением стека вопросы, которые могут оказаться полезными: RenderTargetBitmap renders image of a wrong size
WPF for LCD screen Full HD
Screen Resolution Problem In WPF?
Может быть, это какой-то вопрос DPI. Я не хочу больше говорить, потому что я ненавижу думать о DPI – musefan
@musefan Я все еще на одной машине. Он работал и загружался как 1000x1000. Как только я удалил старое изображение (по ошибке) и создал новый, он начал загружаться как 800x800 –
ну ... в этом случае он должен работать нормально, и нет проблем ... – musefan