ContentControl + RenderTargetBitmap + imagem vazia
Estou tentando criar algumas imagens do gráfico sem nunca exibi-los na tela. Estive nisso por um bom tempo e tentei muitas coisas diferentes, mas nada parece funcionar. O código funciona perfeitamente se eu exibir o gráfico em uma janela primeiro, mas se eu não exibi-lo em uma janela, o bitmap será apenas branco com uma borda preta (não faço ideia do porquê).
Tentei adicionar o gráfico a uma borda antes de renderizar e atribuir à borda uma borda verdeBrush. No bitmap, vejo a borda verdePincel, em seguida, a borda preta e o fundo branco, mas nenhum gráfico. O gráfico não está contido em uma fronteira preta, então não sei de onde isso vem.
Eu tentei adicionar o gráfico a uma janela sem chamar window.Show () e novamente recebo a borda preta e o fundo branco. No entanto, se eu chamar window.Show (), o bitmap contém o gráfico.
Eu tentei usar um drawingVisual como explicadoaqui, mesmo resultado.
Aqui está o código (não incluindo a adição do elemento a uma borda ou janela):
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;
}
Nota: O gráfico é um ContentControl.
Existe alguma maneira de obter o gráfico para renderizar sem exibi-lo em uma janela primeiro?