2017-04-25 181 views
0

分我已經與Directshow.NET一個C#應用程序,以顯示相機的預覽。一切都進展順利,幾乎在每一個操作系統,但在某些Windows 10操作系統的機器(不是每贏OS 10,只是其中的一些)預覽進去Paint事件Control在行hr = vmr9Control.RepaintVideo(hControl.Handle, gHDC);失敗,原因是異常Attempted to divide by zero.IVMRWindowlessControl.RepaintVideo導致試圖通過零

我搜索了很多找到這個異常的原因,連我formattted機器之一,但問題仍然存在。同樣根據觀察,這個例外不會在第一次嘗試預覽時發生,在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); 
    }    
} 

回答

1

我建議你卸載重新安裝顯卡驅動程序

步驟:卸載重新安裝顯示驅動程序

設備管理器中刪除顯示驅動器:

一個。通過點擊搜索框中的開始按鈕類型設備管理器打開設備管理器

灣如果提示您輸入管理員密碼或確認,請鍵入密碼或提供確認。

c。外觀爲顯示適配器驅動程序,右鍵單擊它並選擇卸載。 d)。 重新啓動電腦。

即重新啓動時,Windows 10應自動重新安裝驅動程序。