首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用SharpDX显示大图像

用SharpDX显示大图像
EN

Stack Overflow用户
提问于 2017-01-16 21:44:47
回答 1查看 1.4K关注 0票数 1

我试图使用SharpDX从文件中绘制一个大图像(21000x7000)。

代码如下所示:

代码语言:javascript
运行
复制
        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函数中得到以下异常:

代码语言:javascript
运行
复制
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完全陌生。处理这件事最好的方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-17 17:29:36

从您的描述来看,这个问题似乎超出了Direct3D的纹理大小限制(Direct2D使用Direct3D来完成它的工作,因此它具有相同的约束)。

如果您查看Direct3D特征级表中的最大纹理维度,您将看到从4,09616,384像素不等,这取决于图形硬件的级别。您可以:

  • 假设4,096是您的限制(如果您在各种具有不同显卡的计算机上运行此程序,您应该这样做)
  • 运行dxdiag.exe,单击"Display 1“选项卡,查找功能级别或DDI,以查看哪些功能级别可用。

解决方案是调整图像的大小,直到它符合像素限制,然后再调用target.DrawBitmap。换句话说,你不可能像你想的那样轻松地缩放--即使你放大和缩小一个纹理,在某个时候你将不得不重采样,否则它将比原始图像更像素化。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41685483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档