4

我将 SharpDX 用于我的 WinRT 应用程序。对于像素着色器,我尝试使用此代码加载图像

private Bitmap LoadImage(System.IO.Stream stream)
{
  var bitmapDecoder = new SharpDX.WIC.BitmapDecoder(
        this.deviceManager.WICFactory,
        stream,
        SharpDX.WIC.DecodeOptions.CacheOnLoad);

  var converter = new SharpDX.WIC.FormatConverter(this.deviceManager.WICFactory);
  converter.Initialize(
        bitmapDecoder.GetFrame(0),
        SharpDX.WIC.PixelFormat.Format32bppPBGRA,
        SharpDX.WIC.BitmapDitherType.None,
        null,
        0.0f,
        SharpDX.WIC.BitmapPaletteType.Custom);

  return Bitmap.FromWicBitmap(this.deviceManager.ContextDirect2D, converter);
}

它在模拟器或带有 Intel CPU(例如 Acer Iconia)的平板电脑上完美运行。但是我在带有 ARM 处理器(Windows Surface,Asus)的平板电脑上出现了一个奇怪的错误。Bitmap.FromWicBitmap返回一个Bitmap对象,不为null,有正确的DPI和PixelFormat信息,但是Size.Width和Size.Height为0。没有发生异常,但是加载的Bitmap没有数据(->黑图) . 要加载的图像是普通的 jpg 或 png 文件,并且尺寸较小(fe 256x1 pix)。我忘记了什么吗?感谢您的回答。

4

0 回答 0