【问题标题】:RenderTargetBitmap getting error insufficient memoryRenderTargetBitmap 出现内存不足的错误
【发布时间】: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,该代码在正常分辨率下工作正常图片
  • 您不能类似地编辑 normallarge(巨大的?)图像。对于大图像,总是存在与内存相关的问题。制作x64 应用程序并安装更多内存可以解决这些问题,以便您可以继续使用简单 RenderTargetBitmap 方法。最简单的方法是处理异常并告诉用户“抱歉,图像太大,请使用其他软件”(Photoshop?)。另一种选择是搜索一个库,该库允许在不完全加载它们的情况下处理巨大的图像(我不知道,抱歉)。

标签: c# wpf canvas render


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-08
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 2012-05-15
    • 2016-10-10
    • 2013-03-15
    相关资源
    最近更新 更多