0

我有一个托管 WinformsPanel 的 WPF 应用程序

<WindowsFormsHost>
    <windowsForms:Panel 
        x:Name="PlayerHost">
    </windowsForms:Panel>
<WindowsFormsHost>

然后我使用此面板显示视频。我正在使用Mpv.NET lib 来执行此操作。视频播放器已正确初始化:

//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);
}

为了清楚起见:视频被显示。我可以看到视频内容。当媒体正确加载时,我开始绘制图像。我什至将绘图命令卸载到单击按钮。因此,当视频运行时,我尝试进行“帧捕获”,可以这么说。但是图像仍然是空白的。

如何捕获面板内容?它与提供给视频播放器的本机句柄有关吗?提前致谢。

4

1 回答 1

0

您可以使用以下代码将面板内容保存到位图:

using (Bitmap b = new Bitmap(panel.Width, panel.Height))
{
    panel.DrawToBitmap(b, new Rectangle(0, 0, b.Width, b.Height));
    b.Save("test.png");
}
于 2021-11-04T19:15:09.490 回答