WPF Instantiate controle de usuário programaticamente para processá-lo como PNG

Eu quero instanciar um controle de usuário programaticamente em uma DLL para salvá-lo posteriormente como arquivo PNG. Isso geralmente não é problema com PngBitmapEncoder e RenderTargetBitmap.

Estas são minhas perguntas:

Como faço para instanciar o controle? Simplesmente com o novo operador?Eu tenho que instanciá-lo em um thread separado?Como faço para forçar o controle a atualizar todos os seus filhos e a renderizar a si mesmo novamente?

Este é o meu código para instanciar o controle de usuário e salvá-lo como arquivo PNG (LetterFrequency é o controle de usuário):

    [STAThread]
    static void Main(string[] args)
    {
        LetterFrequency let = new LetterFrequency();
        let.Width = 600;
        let.Height = 400;
        let.Background = Brushes.White;

        let.Measure(new Size(let.Width, let.Height));
        let.Arrange(new Rect(new Size(let.Width, let.Height)));

        let.UpdateLayout();

        RenderTargetBitmap bitmap = new RenderTargetBitmap((int)let.Width, (int)let.Height, 96d, 96d, PixelFormats.Pbgra32);
        bitmap.Render(let);

        PngBitmapEncoder png = new PngBitmapEncoder();
        png.Frames.Add(BitmapFrame.Create(bitmap));

        using (Stream stm = File.Create("test.png"))
        {
            png.Save(stm);
        }
    }

Se você executar o aplicativo dessa maneira, ele gerará o arquivo PNG, mas os dados, que serão adicionados no XAML, não estarão visíveis. Se você examinar o XAML Designer, poderá ver o gráfico com algumas bolhas. O arquivo png contém apenas a área do gráfico, mas não há bolhas? Porquê isso? Eu acho que é um problema de atualização / renderização, mas como resolver isso?

Aqui está a solução de visual studio, que contém o projeto de console, que processa o controle de usuário para um arquivo PNG e dois outros projetos do kit de ferramentas do WPF para o gráfico.

Dê uma olhada nisso, ele irá gerar o arquivo PNG no bin / Debug, respectivamente, na pasta exe:http://www.file-upload.net/download-1904406/ChartRenderBitmap.zip.html

Espero que funcione sem problemas!

Obrigado!

questionAnswers(1)

yourAnswerToTheQuestion