我正在将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文件,并且具有小尺寸(f.e.256x1像素)。 我忘了什么吗?谢谢你的回答。