我的公司有一個很大的遺留的Delphi應用程序,我們試圖逐步遷移到.Net框架。我們已經決定使用WPF實現新的GUI元素並通過COM公開它們。我相信這是相當標準的,因爲我在網上看到很多關於人們正在做這件事的材料。如何禁用通過COM公開的WPF HwndSources的DPI縮放比例?
到目前爲止,我們對概念/演示樣本的證明一直運行良好。我們通過COM互操作庫公開了各種「創建元素X」方法,該庫返回新創建的HwndSource包裝器的Hwnd。然後我們調用SetParent將新控件放置在Delphi應用程序所需的位置。
現在唯一的問題似乎是,當DPI設置設置爲除96dpi以外的任何設置時,傳統的Delphi和新的WPF GUI元素都無法共存。
我們從未在Delphi應用程序中處理過高DPI,因此建議客戶使用Windows(非XP)擴展來擴展高DPI監視器上的應用程序。
但是,這似乎是導致與新的WPF元素衝突,因爲他們似乎已經呈現在增加的DPI設置,然後再次炸燬(也許?我不是100%肯定在哪裏問題在於此)通過Windows縮放整個應用程序。
我現在想嘗試的是禁用這些WPF元素的自動縮放,將它們帶入Delphi應用程序,就好像監視器設置爲96dpi一樣。然後,我們會讓窗口縮小,讓它們恢復到所需的DPI。