我已经开发了一个C#应用程序与Directshow.NET显示相机预览。几乎所有的操作系统都进行得很好,但是在一些windows OS 10机器上(不是每个windows OS 10,只是其中的一部分),预览都失败了,原因是hr = vmr9Control.RepaintVideo(hControl.Handle, gHDC);在Control的Paint事件中出现了异常。
为了找出这一异常的原因,我找了很多,甚至我整理了一台机器,但问题仍然存在。此外,根据观察,此异常不会在预览的第一次尝试中出现,在显示预览和停止预览的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);
}
}发布于 2017-06-07 11:25:07
我建议您卸载和重新安装图形卡驱动程序。
步骤:卸载和重新安装显示驱动程序.
从设备管理器中删除显示驱动程序
通过单击搜索框中的开始按钮或键入设备管理器来打开设备管理器。
如果提示您输入管理员密码或确认,请键入密码或提供确认。
查找显示适配器驱动程序,右键单击它并选择卸载。
重启电脑.
在重新启动时,Windows 10应该自动重新安装驱动程序.
https://stackoverflow.com/questions/43601724
复制相似问题