Собственная ширина и высота «независимого от устройства пикселя» в WPF 1/96 дюйма, то есть WPF dr aws с 96 DIP / дюйм или DPI.
Если вы загружаете растровое изображение с другим DPI, BitmapSource масштабируется до 96 точек на дюйм, т. Е. Его свойства Width и Height установлены на
bitmap.Width = bitmap.PixelWidth * 96 / bitmap.DpiX
bitmap.Height = bitmap.PixelHeight * 96 / bitmap.DpiY
Эти значения используются для размера элемента Image, когда Stretch установлен на None
.
Чтобы компенсировать это масштабирование, вы можете создать растровое изображение, которое меняет масштаб, например, применяя соответствующий ScaleTransform к свойству Transform TransformedBitmap.
var scaled = new TransformedBitmap(bitmap,
new ScaleTransform(bitmap.DpiX / 96, bitmap.DpiY / 96));
Таким образом, вы убедитесь, что Ширина и высота масштабированного растрового изображения всегда равны PixelWidth и PixelHeight.