Im пытается создать некоторые изображения диаграмм, не отображая эти графики на экране. Я долгое время занимался этим и пробовал много разных вещей, но ничего не работает. Код работает отлично, если я сначала показываю диаграмму в окне, но если я не покажу ее в окне, растровое изображение просто белое с черной рамкой (не знаю почему).ContentControl + RenderTargetBitmap + пустое изображение
Я попытался добавить диаграмму к границе перед рендерингом и дать границе зеленой рамкой. В растровом изображении я вижу зеленый borderBrush, затем черную рамку и белый фон, но нет диаграммы. Диаграмма не содержится в черной рамке, поэтому я не знаю, откуда она.
Я попытался добавить диаграмму в окно без вызова window.Show() и снова я просто получить черный границы и белый фон. Однако, если я вызываю window.Show(), битмап содержит диаграмму.
Я попытался использовать чертежVisual, как описано 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? –
Простите, прошло уже два года с тех пор, как я ответил на это, и у меня больше нет доступа к этому коду. Попробуйте добавить его перед UpdateLayout – Kelly
Спасибо за сообщение ответа. Ты спас мне много неприятностей! :) – ihake