【发布时间】:2015-01-27 02:45:52
【问题描述】:
当我尝试使用画布(10000 X 10000)分辨率渲染图像(10000 X 10000)分辨率时出现内存不足异常。
bmp = new RenderTargetBitmap((int)width, (int(height),graphics.DpiX,graphics.DpiY,PixelFormats.Default)bmp.Render(vs);
dc.PushTransform(new TranslateTransform(difX + left - horizontalScale, difY + top - verticalScale));
dc.PushTransform(new ScaleTransform(1, 1));
// Ask canvas to draw overlays
drawingCanvas.Draw(dc);
// Restore old actual scale.
drawingCanvas.ActualScale = oldActualScale;
// Restore clip
drawingCanvas.RefreshClip();
dc.Pop();
dc.Pop();
dc.Pop();
dc.Close();
width = (Utilityhelper.GetDIPIndependentHorizontal(rect.Width));
height = (Utilityhelper.GetDIPIndependentVertical(rect.Height));
bmp = new RenderTargetBitmap((int)width, (int)(height), Utilityhelper.graphics.DpiX, Utilityhelper.graphics.DpiY, PixelFormats.Default);
if (bmp != null)
{
bmp.Render(vs);
}
【问题讨论】:
-
微软人打电话给
7000x7000画布huge。您必须安装更多内存或更改方法,因为您正在使用的内存需要更多内存。 -
你能建议我用什么来实现这种功能......
-
什么样的功能?我不知道你在做什么。
-
我需要将图像与画布上的绘图元素合并。例如,我需要在图像上绘制矩形,所以在这里我使用 RenderTargetBitmap approuch,然后我保存该图像 RenderTargetBitmap,该代码在正常分辨率下工作正常图片
-
您不能类似地编辑 normal 和 large(巨大的?)图像。对于大图像,总是存在与内存相关的问题。制作
x64应用程序并安装更多内存可以解决这些问题,以便您可以继续使用简单RenderTargetBitmap方法。最简单的方法是处理异常并告诉用户“抱歉,图像太大,请使用其他软件”(Photoshop?)。另一种选择是搜索一个库,该库允许在不完全加载它们的情况下处理巨大的图像(我不知道,抱歉)。