C# IVMRWindowlessControl.RepainVideo试图除以零
我用Directshow.NET开发了一个C#应用程序来显示相机预览。几乎在每个操作系统上都进展顺利,但在一些windows OS 10机器上(不是每个win OS 10,只是其中一些机器)由于异常C# IVMRWindowlessControl.RepainVideo试图除以零,c#,directshow,directshow.net,C#,Directshow,Directshow.net,我用Directshow.NET开发了一个C#应用程序来显示相机预览。几乎在每个操作系统上都进展顺利,但在一些windows OS 10机器上(不是每个win OS 10,只是其中一些机器)由于异常试图除以零而导致预览失败。在hr=vmr9Control.repainvideo(hControl.Handle,gHDC)行内部绘制控件事件 我搜索了很多来找出这个异常的原因,即使我格式化了一台机器,但问题仍然存在。此外,根据观察,首次尝试预览时不会出现此异常,在显示预览和停止预览5-6次迭代后,会
试图除以零而导致预览失败。
在hr=vmr9Control.repainvideo(hControl.Handle,gHDC)行代码>内部绘制控件事件
我搜索了很多来找出这个异常的原因,即使我格式化了一台机器,但问题仍然存在。此外,根据观察,首次尝试预览时不会出现此异常,在显示预览和停止预览5-6次迭代后,会导致此异常
private void SetupGraph(DsDevice dev, Control hControl)
{
...
vmr9Control = (IVMRWindowlessControl)vmr9preview;
vmr9Control.SetVideoClippingWindow(hControl.Handle);
vmr9Control.SetAspectRatioMode(VMRAspectRatioMode.None);
hControl.Paint += new PaintEventHandler(hControl_Paint);
...
}
[System.Security.Permissions.SecurityPermission(
System.Security.Permissions.SecurityAction.LinkDemand, Flags =
System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)]
void hControl_Paint(object sender, PaintEventArgs e)
{
if (isPreviewstarted && vmr9Control != null)
{
int hr;
IntPtr gHDC = e.Graphics.GetHdc();
hr = vmr9Control.RepaintVideo(hControl.Handle, gHDC);
DsError.ThrowExceptionForHR(hr);
e.Graphics.ReleaseHdc(gHDC);
}
}
我建议您卸载并重新安装图形卡驱动程序
步骤:卸载和重新安装显示驱动程序
要从设备管理器中删除显示器驱动程序,请执行以下操作:
a。单击开始按钮打开设备管理器,或在搜索框中键入设备管理器
b。如果系统提示您输入管理员密码或确认,请键入密码或提供确认
c。查找显示适配器驱动程序,右键单击它并选择卸载
d重新启动计算机
e。重新启动时,Windows 10应自动重新安装驱动程序