我想在控制檯應用程序中呈現一個圖表控件(來自WPF工具包http://wpf.codeplex.com)(我實際上從不向用戶展示它),但是我繼續得到一個空的圖像。如果我選擇其他控件(例如TextBlock),那麼一切都按預期工作。 下面是重現該問題的代碼:如何渲染圖表(從wpf工具包)控制屏幕?
//開始
Chart chart = new Chart { Width = 300, Height = 230 };
//我不加系列,但因爲我想,也許是造成問題...
chart.Background = Brushes.Blue;
chart.BorderBrush = Brushes.Red;
chart.BorderThickness = new Thickness(10);
chart.Title = "Test chart";
chart.Measure(new Size(chart.Width, chart.Height));
chart.Arrange(new Rect(new Size(chart.Width, chart.Height)));
RenderTargetBitmap rtb = new RenderTargetBitmap((int)chart.Width, (int)chart.Height, 96, 96, PixelFormats.Pbgra32);
rtb.Render(chart);
PngBitmapEncoder png = new PngBitmapEncoder();
png.Frames.Add(BitmapFrame.Create(rtb));
using (System.IO.Stream stream = System.IO.File.Create("C:\\chart.png"))
{
png.Save(stream);
}
// END
如果我不是在控制檯而是在WPF應用程序中運行此代碼,其中chart是窗體上顯示的控件,則一切正常。人們提到了用於在不同線程上繪製控件的動畫。我試圖讓我的主線程睡着,希望其他人有時間來繪製圖表。這裏沒有運氣...
任何想法?我怎樣才能使這個控制離屏?
無論如何,在控制檯應用程序中運行WPF組件的意義何在?由於您選擇的應用程序加載相應的參考DLL,因此這不是一種方便的方法。 – 2010-12-18 15:13:03
在控制檯應用程序中執行此操作的原因是我不需要整潔的WPF窗口。我只需要在內存中生成圖形,例如將其保存到文件中。當然,我包含所有必需的DLL,所以一切都成功編譯。任何想法是什麼問題在我的情況? – Michal 2011-01-12 15:32:50
我遇到了同樣的問題(但我使用Windows服務代替)和本文[這裏](http://stackoverflow.com/questions/1461382/wpf-instantiate-user-control-programmatically-to-render -it-as-png/1468738#1468738)幫助解決它。 – ssarabando 2011-01-31 11:33:12