【发布时间】:2017-05-31 19:52:51
【问题描述】:
我正在尝试使用 SharpDX 从文件中绘制大图像 (21000x7000)。
代码如下所示:
if (newBitmap==null)
{
ImagingFactory imagingFactory = new ImagingFactory();
NativeFileStream fileStream = new NativeFileStream(@"D:\path\myfile.png",
NativeFileMode.Open, NativeFileAccess.Read);
BitmapDecoder bitmapDecoder = new BitmapDecoder(imagingFactory, fileStream, DecodeOptions.CacheOnDemand);
BitmapFrameDecode frame = bitmapDecoder.GetFrame(0);
FormatConverter converter = new FormatConverter(imagingFactory);
// Format32bppPArgb
// Format32bppPRGBA
converter.Initialize(frame, SharpDX.WIC.PixelFormat.Format32bppPRGBA);
newBitmap = SharpDX.Direct2D1.Bitmap1.FromWicBitmap(target, converter);
}
target.DrawBitmap(newBitmap,new RawRectangleF(0,0,target.Size.Width,target.Size.Height),1,BitmapInterpolationMode.Linear );
执行时,FromWicBitmap 函数出现以下异常:
Exception thrown: 'SharpDX.SharpDXException' in SharpDX.dll
Additional information: HRESULT: [0x80070057], Module: [General], ApiCode: [E_INVALIDARG/Invalid Arguments], Message: The parameter is incorrect.
当我将图像大小调整为 2100x700 时,它可以正常加载和显示,所以问题在于图像大小。
我想要这个尺寸的图像,因为以后我打算添加缩放功能。
我对 Direct2D 完全陌生。处理这个问题的最佳方法是什么?
【问题讨论】:
-
您确实需要打开 DirectX 调试才能找到问题的根本原因。这在此处进行了描述stackoverflow.com/questions/3331240/…
标签: c# image direct2d sharpdx wic