我剛剛開始使用 CefSharp 作為可嵌入的網路瀏覽器,以替換默認的 WinForms 網路瀏覽器(通過將其中任何一個包裝在我自己的類中)。(我不想使用在表單級別引入 CefSharp 的“最小示例”,至于這個應用程式我動態添加 UI 元素,一般來說我希望能夠在沒有形式注意它。
在我得到的簡單示例中,它“有點作業”,該網站確實出現了,但顯示的網站左側和上方有黑色部分,左上角有一個白色塊。即使沒有指定 URL,這些也會顯示。這可能與某些設定或其他有關,但我無法追蹤它。我將插入一張我看到的更清晰的影像。(如果我使用 Winforms Webbrowser,當我訪問 map.html 時,我只會在控制元件中看到谷歌地圖,也就是說,沒有周圍的塊)。我確實有很多原因想在未來超越這種控制,這感覺非常接近作業。
我剛才注意到,當我將滑鼠移到左上角的白色區域時,圖示會發生變化,看起來這些區域具有一些滑鼠單擊功能,在這種情況下,我需要找出如何不讓它們出現。
“執行”按鈕實際上執行 LoadURL;在最終的應用程式中,除非照片的 EXIF 資料包含緯度/經度資料,否則控制元件將被隱藏。所以在這個例子中,我從 CefSharp 的 ChromeWebbrowser 開始,沒有加載任何內容,然后使用按鈕模擬動態 URL 設定(有撰寫 MAP.HTML 檔案的代碼 - 我也會包含該檔案以供參考,盡管出現了有問題的部分沒有指定 URL。)[環境是 Visual Studio 2022 中的 VB.net,在 Windows 10 上]

所以,對于代碼 - 我有一個 MyWebBrowser 的類檔案,我將在表單上使用它。最初它只是從 Winforms 網路瀏覽器控制元件繼承而來,但我已經注釋掉了——我可以通過注釋掉一個或另一個來使用 CefSharp 的任何一個,只是為了測驗表單級別的問題,看看事情在很大程度上是相同。不確定VS有條件編譯的設施,那是另一天。)無論如何這里是代碼,捕獲為影像:

呼叫表單動態創建 MyWebBrowser,然后在單擊按鈕時設定 URL。這是表單代碼:

這是我加載任何 URL 之前表單的樣子:

僅供參考,這是正在顯示的 map.html 檔案:
<!DOCTYPE html>
<HTML>
<HEAD>
<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
<meta charset="windows-1252" >
<TITLE>Map</TITLE>
</HEAD>
<BODY>
<iframe
width=300
height=494
frameborder="0" style="border:0" src=http://maps.google.com/maps?output=embed&q=41.4098277777778,-71.9060972222222>
</iframe>
</BODY>
</HTML>
uj5u.com熱心網友回復:
需要使使用 WinForms/WPF 的桌面應用程式具有 DPI Aware 才能在高 DPI 顯示幕(DPI 比例設定大于 100% 的顯示幕)上正確運行。
注意如果您的滑鼠游標在瀏覽器中的位置不正確,或者瀏覽器顯示帶有渲染/調整大小的黑框/邊框,那么您的應用需要具備 DPI 感知能力。應用程式的其他部分也可能顯得模糊或大小不正確。
根據https://github.com/cefsharp/CefSharp/wiki/General-Usage#high-dpi-displayssupport
最簡單的解決方案是讓您的應用程式了解 DPI。有許多選項可以實作這一目標。
- 如果您的目標是 .Net 4.7 或更高版本,則建議使用Windows 表單中的高 DPI 支持中提供的指南。
- 對于舊版本,然后通過 app.manifest 配置
- 對于 .Net Core 和 .Net 5 ,還有一個新的 progremattic 方法Application.SetHighDpiMode
為了解決評論中的一些問題:
黑塊是瀏覽器行程(您的應用程式)在 DPI 感知方面與 GPU 合成器不匹配的結果(默認情況下,CefSharp.BrowserSubProcess.exe 與 --type=gpu-process 一起使用)。兩者都需要具有相同的 DPI 意識。當它們不同時,預計您會看到黑框。
桌面應用程式必須告訴 Windows 它們是否支持 DPI 縮放。默認情況下,系統認為桌面應用程式 DPI 不知情,并且位圖拉伸它們的視窗。一旦您的應用程式正確支持 DPI 感知,那么它將在使用 100% 的默認 DPI 和使用更高 DPI(例如 200%)的系統上運行
任何有興趣了解更多資訊的人,我建議閱讀https://docs.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows#display-scale-factor --dpi
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/497121.html
