我正在尝试使用SharpDX从文件中绘制一张大图像(21000x7000)。
代码如下所示:
FromWicBitmap
执行时,我在Exception thrown: 'SharpDX.SharpDXException' in SharpDX.dll
Additional information: HRESULT: [0x80070057], Module: [General], ApiCode: [E_INVALIDARG/Invalid Arguments], Message: The parameter is incorrect.
函数中遇到异常:
var data01 = "docs/Document01.pdf"
var data02 = "docs/Document02.pdf"
var data03 = "docs/Document03.pdf"
...
document.getElementById("doclink01").href = data01;
document.getElementById("doclink02").href = data02;
document.getElementById("doclink03").href = data03;
...
当我将图像尺寸调整为2100x700时,它会加载并显示得很好,因此问题在于图像尺寸。
我想要这个尺寸的图像,因为后来我计划添加缩放功能。
我是Direct2D的新手。解决这个问题的最佳方法是什么?
答案 0 :(得分:1)
根据您的描述,听起来这个问题超出了Direct3D的纹理大小限制(Direct2D使用Direct3D进行工作,因此它具有相同的约束条件。)
如果您查看Direct3D Feature Level table中的最大纹理尺寸,您会看到范围从 4,096 到 16,384像素取决于图形硬件的级别。你可以:
解决方案是在调用target.DrawBitmap
之前调整图像大小,直到它符合像素限制。换句话说,你不能像你想的那样轻松地进行缩放工作 - 即使你放大和缩小纹理,在某些时候你必须重新采样或者它会比像素更像素化。原始图片。