Я хочу отобразить элемент управления Chart (из инструментария WPF http://wpf.codeplex.com) в консольном приложении (я никогда его не показываю), но я продолжаю получать пустое изображение. Если я выберу какой-то другой элемент управления ( например TextBlock) тогда все работает как положено.
Вот код для воспроизведения проблемы:
// НАЧАЛО
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, где диаграмма - это элемент управления, показанный в форме, все работает нормально. Люди упоминают что-то об анимации, используемой для рисования элемента управления в другом потоке. Я пытался заснуть мой основной поток, надеясь, что другой успеет нарисовать график. Здесь тоже не повезло ...
Есть идеи? Как я могу сделать этот элемент управления вне экрана?