Экспортируйте все содержимое сетки в изображение(а не только в видимую область)
Мне нужно написать универсальный код, чтобы экспортировать содержимое пользовательских элементов управления/сетки в формате PNG.
напр.:
<Grid> <dockPanel> <Textblock>......<Textblock> <dockPanel> <scrollViewer> <listView> ..... </listview> </scrollViewer> <chart>....</chart> ...... <Grid>
Мне нужно экспортировать вышеописанный пользовательский интерфейс в PNG.
Что я уже пробовал:
public void ExportToPNG(FrameWorkElement element, Stream stream) { BitmapEncoder encoder = new PngBitmapEncoder(); var bitmap = new RenderTargetBitmap( (int)element.RenderSize.Width, (int)element.RenderSize.Height, 96, 96, PixelFormats.Default); Rect bounds = VisualTreeHelper.GetDescendantBounds(element); DrawingVisual drawingVisual = new DrawingVisual(); using (DrawingContext context = drawingVisual.RenderOpen()) { VisualBrush brush = new VisualBrush(element); Rect rect = new Rect(0, 0, bounds.Width, bounds.Height); context.DrawRectangle(Brushes.White, null, rect); context.DrawRectangle(brush, null, rect); } bitmap.Render(drawingVisual); encoder.Frames.Add(bitmap); encoder.Save(stream); }
Приведенный выше код работает. Но это просто экспорт видимой области(из ScrollViewer). Мне нужно экспортировать весь контент из ScrollViewer.
Примечание: некоторые виды могут не иметь ScrollViewer
Любые советы или рекомендации будут очень признательны!
Спасибо!