我将 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)。我忘记了什么吗?感谢您的回答。