Web 浏览器中的内容在 Windows 窗体应用程序中自动缩放时出现问题

2024-01-04

我正在尝试创建一个程序,该程序可以滚动浏览计算机上的文件并显示这些文件。到目前为止,这对我有用,但我得到的是实际大小的内容,因此网络浏览器添加了一个滚动条(显然)。我希望内容自动缩放,以便它适合网络浏览器,而无需滚动。

Code:

 WebBrowser web = new WebBrowser();     
 System.Drawing.Rectangle workingRectangle = Screen.PrimaryScreen.WorkingArea;
 int heightWebcontrol = workingRectangle.Height / 100 * 85;
 int widthwebControl = workingRectangle.Width / 100 * 75;
 web.Size = new Size(widthwebControl, heightWebcontrol);
 web.Location = new Point(0, 0);
 web.Navigate(fileName);
 this.Controls.Add(web);

网络浏览器中的大图像,这只是图像的 1/5:

所以基本上,这个大图像需要自动缩放,以使其完全适合浏览器。

多谢你们。


作为一个选项,您可以处理DocumentCompleted事件的WebBrowser根据尺寸控制和设置图像的样式。

例如:

1)创建Windows窗体项目 2)在设计模式下打开Form1并拖放一个WebBrowser对其进行控制。 3)双击表格标题栏进行处理Load形式的事件并使用以下代码:

private void Form1_Load(object sender, EventArgs e)
{
    this.webBrowser1.Navigate("https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png");
}

4)双击WebBrowser控制来处理它的DocumentCompleed事件并使用以下代码:

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    webBrowser1.Document.Body.SetAttribute("scroll", "no");
    var img = webBrowser1.Document.GetElementsByTagName("img")
                 .Cast<HtmlElement>().FirstOrDefault();
    var w = img.ClientRectangle.Width;
    var h = img.ClientRectangle.Height;
    img.Style = string.Format("{0}: 100%", w > h ? "Width" : "Height");
}

您将看到以下结果,而原始图像尺寸为 544x184:

Note 1

这只是您可以执行的操作的一个示例。您可以做出更明智的决定,例如检查图像尺寸是否小于浏览器尺寸,那么您不需要应用任何缩放。

注2 - (这是我的选择)

如果您设置WebBrowser控制到支持显示现代内容 https://stackoverflow.com/a/38514446/3110834更好的图像样式是:

img.Style = "max-width:100%;max-height:100%";

这样,当图像大于浏览器时,图像将适合浏览器。当浏览器足够大时,它也不会调整大小。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Web 浏览器中的内容在 Windows 窗体应用程序中自动缩放时出现问题 的相关文章

随机推荐