#c# #wpf #winforms #mpv
Вопрос:
У меня есть WPF-приложение, в котором размещена WinformsPanel
<WindowsFormsHost>
<windowsForms:Panel
x:Name="PlayerHost">
</windowsForms:Panel>
<WindowsFormsHost>
Затем я использую эту панель для отображения видео. Я использую Mpv.NET либ, чтобы сделать это.
Видеопроигрыватель инициализирован правильно:
//panel.Handle is the windowsForms:Panel named PlayerHost
player = new MpvPlayer(panel.Handle, Common.IO.FindLib.FindMpvLib(binaryPath));
player.Load(videoFilePath);
Теперь, если я попытаюсь нарисовать содержимое панелей, результирующее изображение останется пустым. Код для рисования изображения выглядит следующим образом:
using (var bmp = new Bitmap(panel.ClientSize.Width, panel.ClientSize.Height))
{
panel.DrawToBitmap(bmp, panel.ClientRectangle);
bmp.Save(@"Some:path.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
}
Чтобы было понятно: отображается видео. Я вижу видеоконтент. И я начинаю рисовать изображение, когда носитель правильно загружен. Я даже выгрузил команду рисования для нажатия кнопки. Итак, пока видео работало, я попытался сделать, так сказать, «захват кадра». Но изображение остается пустым.
Как я могу захватить содержимое панелей? Имеет ли это какое-то отношение к собственному дескриптору, предоставляемому видеопроигрывателю? Заранее спасибо.
Комментарии:
1. К вашему сведению, вы можете показывать видео непосредственно в форме WPF — для этого вам не нужно размещать панель форм. — Здесь нет информации о том, как вы на самом деле пытаетесь захватить кадр.
2. Вы имеете в виду элемент мультимедиа? Mpv кажется мне более надежным с большим разнообразием поддерживаемых кодеков. Последняя часть отображает захват. Видео отображается на панели, и моя идея сохранить содержимое панелей в растровом изображении не работает.
Ответ №1:
Содержимое панелей можно сохранить в растровом изображении с помощью следующего кода:
using (Bitmap b = new Bitmap(panel.Width, panel.Height))
{
panel.DrawToBitmap(b, new Rectangle(0, 0, b.Width, b.Height));
b.Save("test.png");
}
Комментарии:
1. Это именно то, что я пробовал и что не сработало в этом контексте.