无法正确显示BitmapSource

时间:2016-11-07 20:11:42

标签: wpf bitmap

我有一个生成BitmapSource的程序,然后用它来创建CurrentImage。然后,我将WPF Image的{​​{1}}属性分配给我创建的BitmapSource

问题在于:无论我将BitmapSource的DPI值设置为什么,我最终都会在4K显示屏上显示颗粒状图片。

我正在使用的XAML是:

<Image Source="{Binding Path=CurrentImage, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SnapsToDevicePixels="True"/>

,代码如下:

private static void SetBitmap(FreeformEditor fe, Bitmap bmp)
    {
      if (fe.lastBitmap != IntPtr.Zero)
        DeleteObject(fe.lastBitmap);

      try
      {

        var data = bmp.LockBits(
          new Rectangle(0, 0, bmp.Width, bmp.Height),
          ImageLockMode.ReadOnly, bmp.PixelFormat);
        var dpi = baseDPI * (1 + fe.RenderForRetina.ToInt());
        fe.CurrentImage = BitmapSource.Create(
          data.Width, data.Height, dpi, dpi, PixelFormats.Bgr32, null,
          data.Scan0, data.Stride * data.Height, data.Stride);
        bmp.UnlockBits(data);

        fe.lastBitmap = bmp.GetHbitmap();
        fe.imageSizeRun.Content = string.Format("{0}x{1} @{2}dpi", fe.CurrentImage.Width,
                                                            fe.CurrentImage.Height,
                                                            fe.CurrentImage.DpiX);
      }
      catch
      {
        // this happens due to framework bugs
      }
    }

0 个答案:

没有答案