[英]How to create a scaling and size-changing Per-Monitor DPI-aware application that is backwards compatible with Windows 7?
[英]Per-monitor DPI-Aware: black window glitch with NVIDIA Optimus
我想制作一個Per-Monitor DPI-Aware Direct2D應用程序。 我已經擴展了Microsoft的“First Direct2D Program”示例來處理WM_DPICHANGED
如Kenny Kerr的MSDN文章中所述 。 當兩台顯示器都使用一塊顯卡時,這種方法很有效,但在使用我的筆記本電腦的NVIDIA Optimus設置時會出現故障。
我可以通過以下步驟運行Per-Monitor Aware WPF示例來重現相同的故障:
(見這個bug的視頻 )
我只是在上面的示例應用程序中看到了這個錯誤,當我嘗試將Kerr的WM_DPICHANGED處理程序添加到一個更簡單的示例時。 可疑的是,我已經看到其他應用程序(Chrome,Visual Studio本身)顯示類似的黑色窗口,但只是暫時的,如果我在顯示器之間拖動並且非常快速地最大化它們。
那么 - 是否有人熟悉這個故障? 是我的顯示驅動程序中的一些錯誤? 或者是否有其他應用程序要做的事情來糾正它,示例代碼沒有?
你說NVIDIA Optimus? 那些司機是犯罪的錯誤。 嘗試使用D2D1_PRESENT_OPTIONS_RETAIN_CONTENTS
標志初始化渲染目標。
在2014年我完成Paint.NET 4.0時,這讓我永遠想起了,我仍然在代碼中發表評論警告我永遠不要把它關掉:
private PresentOptions hwndPresentOptions =
PresentOptions.Immediately |
PresentOptions.RetainContents; // If we don't use RetainContents, then we get awful
// black flickering and mouse trails on some hardware
// (e.g. NVIDIA Optimus)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.