Получить растровое изображение из окна приложения WPF?
-
05-07-2019 - |
Вопрос
Система Winforms.Windows.Формы.Класс Control имеет метод экземпляра "DrawToBitmap", который, я думаю, очень полезен в различных обстоятельствах.Мне интересно, есть ли эквивалентный способ получения системы.Рисование.Растровое изображение из приложения WPF?
Я понимаю, что мог бы выполнить некоторые действия P / Invoke, чтобы просто получить окно приложения, однако мне это не нравится, потому что оно не очень хорошо поддерживает 64-битный переход и не позволяет мне отображать только вспомогательные элементы управления, как это делает DrawToBitmap.
Спасибо, Ричард
Решение
Используйте RenderTargetBitmap как в MSDN
RenderTargetBitmap bitmap = new RenderTargetBitmap(width, height, 96, 96, PixelFormats.Pbgra32);
bitmap.Render(this.YourVisualControlNameGoesHere);
Другие советы
TFD на высоте.Вы также могли бы использовать менее элегантный ссылочный пример из MSDN:
Dim width As Integer = 128
Dim height As Integer = width
Dim stride As Integer = CType(width / 8, Integer)
Dim pixels(height * stride) As Byte
' Try creating a new image with a custom palette.
Dim colors As New List(Of System.Windows.Media.Color)()
colors.Add(System.Windows.Media.Colors.Red)
colors.Add(System.Windows.Media.Colors.Blue)
colors.Add(System.Windows.Media.Colors.Green)
Dim myPalette As New BitmapPalette(Colors)
' Creates a new empty image with the pre-defined palette
Dim image As BitmapSource = System.Windows.Media.Imaging.BitmapSource.Create(width, height, 96, 96, PixelFormats.Indexed1, myPalette, pixels, stride)
Dim stream As New FileStream("new.bmp", FileMode.Create)
Dim encoder As New BmpBitmapEncoder()
Dim myTextBlock As New TextBlock()
myTextBlock.Text = "Codec Author is: " + encoder.CodecInfo.Author.ToString()
encoder.Frames.Add(BitmapFrame.Create(image))
encoder.Save(stream)
Не связан с StackOverflow