我試圖創建一些圖表圖像,而沒有在屏幕上顯示這些圖表。我在這裏呆了很長一段時間,並嘗試了很多不同的東西,但似乎沒有任何工作。如果我首先在窗口中顯示圖表,則該代碼完美工作,但如果我沒有將其顯示在窗口中,則位圖僅爲白色並帶有黑色邊框(不知道爲什麼)。ContentControl + RenderTargetBitmap +空圖像
我已經嘗試在渲染並給邊框添加一個綠色邊框之前將圖表添加到邊框。在位圖中,我看到綠色邊框畫筆,然後是黑色邊框和白色背景,但沒有圖表。該圖表並未包含在黑色邊框中,所以我不知道這是從哪裏來的。
我已經嘗試將圖表添加到窗口而不調用window.Show(),並且我只是得到黑色寄宿生和白色背景。但是,如果我調用window.Show(),則位圖包含圖表。
我已經嘗試使用drawingVisual解釋爲here,結果相同。
下面是代碼(不包括添加元素到一個邊界或窗口):
private static BitmapSource CreateElementScreenshot(FrameworkElement element, int dpi)
{
if (!element.IsMeasureValid)
{
Size size = new Size(element.Width, element.Height);
element.Measure(size);
element.Arrange(new Rect(size));
}
element.UpdateLayout();
var scale = dpi/96.0;
var renderTargetBitmap = new RenderTargetBitmap
(
(int)(scale * element.RenderSize.Width),(int)(scale * element.RenderSize.Height),dpi,dpi,PixelFormats.Default
);
// this is waiting for dispatcher to perform measure, arrange and render passes
element.Dispatcher.Invoke(((Action)(() => renderTargetBitmap.Render(element))), DispatcherPriority.Render);
return renderTargetBitmap;
}
注意:圖表是一個ContentControl中。
無論如何我可以讓圖表呈現而不先在窗口中顯示它?
這不適合我。你在哪裏在你的代碼中插入了ApplyTemplate? – 2012-04-18 10:34:46
抱歉已經過了兩年,因爲我回答了這個問題,並且我無法再訪問該代碼。嘗試在UpdateLayout之前添加它 – Kelly 2012-04-20 20:55:33
感謝您發佈答案。你救了我很多麻煩! :) – ihake 2014-04-18 00:19:13