CefSharp.WinForms "Dock =DockStyle.Fill"没有效果,黑边。如何让ChromiumWebBrowser填充TBForm?

问题描述 投票:0回答:4
public partial class TBForm : Form
{
    private readonly ChromiumWebBrowser browser;

    public TBForm()
    {
        InitializeComponent();

        browser = new ChromiumWebBrowser("www.baidu.com")
        {
            Dock = DockStyle.Fill,
        };

        this.Controls.Add(browser);
    }
}

我得到了这个结果

CefSharp.WinForms “Dock =DockStyle.Fill”没有效果,黑边。

如何让ChromiumWebBrowser填写TBForm?

c# winforms cefsharp
4个回答
6
投票

您是否尝试过使用 CefCommandLineArgs 禁用 GPU 引擎?

当您声明时:

CefSettings settings = new CefSettings();

初始化之前:

Cef.Initialize(settings);

尝试添加下一行代码:

settings.CefCommandLineArgs.Add("disable-gpu", "1");

4
投票

我的经验是这是由于使用较高的 DPI 设置造成的。我在应用程序的入口点使用了推荐的辅助方法:

Cef.EnableHighDPISupport()

请参阅此处了解更多详情: https://github.com/cefsharp/CefSharp/wiki/General-Usage#high-dpi-displayssupport


0
投票

您的 Windows 屏幕分辨率未设置为 100%。 见下图:

enter image description here

这是因为 CefSharp 使用 GPU 进行渲染,并且取决于您的屏幕分辨率设置。

使用此功能会将渲染修复为主机显示最高分辨率:

Cef.EnableHighDPISupport();

这将禁用 GPU 渲染:

var settings = new CefSettings();
settings.CefCommandLineArgs.Add("disable-gpu", "1");
Cef.Initialize(settings);

0
投票

当显示设置为 125% 时(但设置为 100% 时则不会),我在 Windows 10 上的 .Net 8.0 Core Winforms 中看到了此问题。我在 Windows 11 上根本没有看到它。我的修复方法是删除我的 app.manifest,然后在 Visual Studio 中重新创建它,并取消注释

   <application xmlns="urn:schemas-microsoft-com:asm.v3">
       <windowsSettings>
         <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
        <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
      </windowsSettings>
   </application>

新 app.manifest 中的部分。

© www.soinside.com 2019 - 2024. All rights reserved.