我有一个TreeView,在数据模板中显示小图标。我试图使用RenderTargetBitmap将Treeview保存为PNG。WPF RenderTargetBitmap缺少元素
图像在小数据集上正确保存。但是,如果数据集太大,某些图标将从最终图像中排除。神奇的数字似乎是200项。如果树是深的或宽的,在200个项目之后,图标不被渲染似乎并不重要。
添加的代码
因此,这里是我的代码,我使用创建的图像。
RenderTargetBitmap targetBitmap = new RenderTargetBitmap(
(int)_treeView.ActualWidth,
(int)_treeView.ActualHeight,
96, 96, PixelFormats.Default);
targetBitmap.Render(_treeView);
新增屏幕截图
现在,如果我折叠了几个分支,从而隐藏了一些其他图标,那么这些图标就包含在内。这几乎就像RenderTargetBitmap.Render无法渲染所有图标。或者它可能与虚拟面板有关。
您可以为我尝试一些东西;只需将所有图像设置为2x2图像。你仍然得到200项限制? – 2013-03-15 21:55:03
@MeirionHughes哇!有趣。在2×2时,没有图标被渲染。我增加了一些尺寸,然后只有几个图标,比如10个。所以当我问这个问题时,模板被设置为100x100,所以我将它改为150x150,并且所有图标都被渲染了!那么,究竟发生了什么? – 2013-03-18 16:04:39
不知道......非常奇怪,我很想说你在虚拟化和缓存方面有一些问题。你没有对图像做任何事情,比如将所有的图像存储在相同的位图中或什么东西? – 2013-03-18 16:15:26