Search code examples
wpfimage-processingimagesource

Loading image into ImageSource - incorrect width and height


My problem is that the image loading seems to be uncorrectly from application resources. This is code:

    BitmapImage bi = new BitmapImage();
    bi.BeginInit();
    bi.UriSource = new Uri(@"pack://application:,,,/WpfApplication3;component/Resources/Images/16x16_incorrect.png", UriKind.Absolute);
    bi.EndInit();

    ImageSource s = bi;

Image file 16x16_incorrect.png is 16x16 32bpp PNG file, but after executing above code, s.Width = s.Height = 21,59729.... I also have another file - 16x16_correct.png, when it is loaded, both the ImageSource's Width and Height are equal to 16,002.

Other images each of them are loading incorrectly & it looks blurred (or smoothly), because system stretches it from 16x16 to 21x21.

  • correct image : Correct Image
  • incorrect image : Incorrect Image

What is causing this? If the problem in source image files, how can I change ImageSource.Width to desired size in order to use this files?


Solution

  • You need to set the image resolution to 96 DPI (currently it's 71.12 for the incorrect png).

    You can do it using the free paint.net program ( http://getpaint.net ) from the Image menu select Canvas size and set the "resolution" field to 96