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

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

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

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

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

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

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.

Есть ли так или иначе, я могу заставить диаграмму представлять, не отображая его в окне сначала?

7
задан Kelly 1 April 2010 в 17:43
поделиться