我有一个在数据模板中显示小图标的TreeView。我试图使用RenderTargetBitmap将Treeview保存为PNG。
图像正确地保存在小数据集上。但是,如果数据集变得太大,一些图标将被排除在最终图像之外。神奇的数字似乎是200件。如果树是深的还是宽的,那么在200项之后,图标就不会呈现了。
添加了代码
这是我用来创建图像的代码。
RenderTargetBitmap targetBitmap = new RenderTargetBitmap(
(int)_treeView.ActualWidth,
(int)_treeView.ActualHeight,
96, 96, PixelFormats.Default);
targetBitmap.Render(_treeView);添加了屏幕截图
请注意树右侧丢失的图标。

现在,如果我折叠了几个分支,从而隐藏了其他一些图标,那么这些图标就会包括在内。几乎就像RenderTargetBitmap.Render没有能力渲染所有的图标。或者它可能与虚拟面板有关。

这是一个近距离的观察。

发布于 2013-11-27 22:40:38
我立刻注意到你有着巨大的形象。宽度12000。我很惊讶你竟然这么近。
当MSDN状态时,纹理宽度/高度受DirectX纹理限制。
XAML可视树的最大呈现大小受Microsoft纹理的最大维度限制;有关更多信息,请参见资源限制( DirectX )。这个限制可能会根据应用程序运行的硬件而有所不同。超过此限制的非常大的内容可能会被缩放以适合。如果以这种方式应用缩放限制,则可以使用PixelWidth和PixelHeight属性查询缩放后呈现的大小。例如,一个10000×10000像素的XAML可视树可能被缩放到4096×4096像素,这是应用程序运行的硬件强制限制的一个例子。http://msdn.microsoft.com/library/windows/apps/dn298548
我怀疑这些事情:
您可以尝试禁用硬件加速。这件事导致了相当少的硬核心错误。http://msdn.microsoft.com/en-us/library/system.windows.media.renderoptions.processrendermode.aspx
除此之外,这将是一个棘手的问题,但我非常肯定,它会运行得很好:
1)从根对象开始,递归遍历根对象子对象,直到找到小于1000 x 1000的对象。使用RenderTargetBitmap(BMP)拍摄它的照片,并将其合并到内存中-BMP.为每个孩子做。
你应该能计算出所有这些东西。
发布于 2015-09-02 07:40:04
记录在案:有个解决办法。
不要使用RenderTargetBitmap直接呈现Visual,而是使用临时DrawingVisual。使用DrawingVisual将您的视觉绘制为VisualBrush,然后将RenderTargetBitmap与DrawingVisual一起使用。
如下所示:
public BitmapSource RenderVisualToBitmap(Visual visual)
{
var contentBounds = VisualTreeHelper.GetContentBounds(visual);
var drawingVisual = new DrawingVisual();
using (var drawingContext = drawingVisual.RenderOpen())
{
var visualBrush = new VisualBrush(visual);
drawingContext.DrawRectangle(visualBrush, null, contentBounds);
}
var renderTargetBitmap = new RenderTargetBitmap((int)contentBounds.Width, (int)contentBounds.Height, 96, 96, PixelFormats.Default);
renderTargetBitmap.Render(drawingVisual);
return renderTargetBitmap;
}但是,请注意,当您的VisualBrush变得更大时,结果图像变得越来越模糊(当呈现为高DPI时)。要解决这个问题,请使用一系列较小的VisualBrush "tiles“,如下所述:https://srndolha.wordpress.com/2012/10/16/exported-drawingvisual-quality-when-using-visualbrush/
https://stackoverflow.com/questions/15369015
复制相似问题