为位图绘制面板句柄



我有一个wpf应用程序,它承载了一个WinformsPanel

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

然后我使用这个Panel来显示视频。我用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);
}

说明一下:视频被显示。我可以看到视频内容。当媒体正确加载时,我开始绘制图像。我甚至卸载了绘图命令到一个按钮点击。因此,当视频运行时,我试图进行"帧捕捉"。可以这么说。但是图像仍然是空白的。

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

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

using (Bitmap b = new Bitmap(panel.Width, panel.Height))
{
panel.DrawToBitmap(b, new Rectangle(0, 0, b.Width, b.Height));
b.Save("test.png");
}

相关内容

  • 没有找到相关文章

最新更新