ContentControl + RenderTargetBitmap + пустое изображение

Я пытаюсь создать некоторые изображения диаграмм, даже не отображая их на экране. Я занимался этим довольно долго и пробовал много разных вещей, но, похоже, ничего не работает. Код работает отлично, если я сначала отображаю диаграмму в окне, но если я не отображаю ее в окне, растровое изображение просто белое с черной рамкой (понятия не имею, почему).

Я попытался добавить диаграмму к границе перед рендерингом и присвоить границе зеленый borderBrush. В растровом изображении я вижу зеленый borderBrush, затем черную рамку и белый фон, но без диаграммы. Диаграмма не содержится в черной границе, поэтому я не знаю, откуда это исходит.

Я попытался добавить диаграмму в окно, не вызывая window.Show (), и снова я просто получаю черную границу и белый фон. Однако, если я вызываю window.Show (), растровое изображение содержит диаграмму.

Я попытался использовать рисунок визуальный, как объясненоВот, тот же результат.

Вот код (не включая добавление элемента к границе или окну):

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.

Могу ли я в любом случае заставить график отображаться, не отображая его сначала в окне?

Ответы на вопрос(1)

Ваш ответ на вопрос