我有一個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