Как генерировать в фоне компонент WPF с последующим сохранением в PNG

Никак не могу отрисовать в фоне визуальное дерево WPF (приходится делать вьюшки, с последующим их отражением) - это не удобно, видно как окно моментально появляется и исчезает.

        private static byte[] GetPNG<T>(INotifyPropertyChanged viewModel)
            where T : Window, new()
        {
            var wnd = new T()
            {
                DataContext = viewModel
            };
            wnd.Show();

            var content = (FrameworkElement)wnd.Content;

            var rtb = new RenderTargetBitmap((int)content.ActualWidth, (int)content.ActualHeight, 96d, 96d, PixelFormats.Default);
            rtb.Render(content);

            BitmapEncoder pngEncoder = new PngBitmapEncoder();
            pngEncoder.Frames.Add(BitmapFrame.Create(rtb));

            using var ms = new MemoryStream();

            pngEncoder.Save(ms);

            wnd.Close();

            return ms.ToArray();
        }

На данный момент только так...

Может у кого-нибудь есть решение - или знает способ отрисовки в памяти без помещения компонента в визуальное дерево?


Ответы (0 шт):