C# webbrowser中的内容在Windows窗体应用程序中自动缩放时出现问题
我正在尝试创建一个程序,它可以滚动浏览位于我计算机上的文件并显示这些文件。到目前为止,这对我来说是可行的,但我得到的是实际大小的内容,所以webbrowser添加了一个滚动条(显然)。我希望内容能够自动缩放,以便在不必滚动的情况下适合webbrowser 代码: webbrowser中的大型图像,仅为图像的五分之一: 因此,基本上,这个大图像需要自动缩放,以便与浏览器完全匹配C# webbrowser中的内容在Windows窗体应用程序中自动缩放时出现问题,c#,.net,winforms,webbrowser-control,scale,C#,.net,Winforms,Webbrowser Control,Scale,我正在尝试创建一个程序,它可以滚动浏览位于我计算机上的文件并显示这些文件。到目前为止,这对我来说是可行的,但我得到的是实际大小的内容,所以webbrowser添加了一个滚动条(显然)。我希望内容能够自动缩放,以便在不必滚动的情况下适合webbrowser 代码: webbrowser中的大型图像,仅为图像的五分之一: 因此,基本上,这个大图像需要自动缩放,以便与浏览器完全匹配 谢谢大家。作为一个选项,您可以处理WebBrowser控件的DocumentCompleted事件,并根据大小设置图像
谢谢大家。作为一个选项,您可以处理
WebBrowser
控件的DocumentCompleted
事件,并根据大小设置图像样式
例如:
1) 创建Windows窗体项目
2) 在设计模式下打开Form1并在其上放置WebBrowser
控件。
3) 双击表单标题栏以处理表单的加载
事件,并使用以下代码:
private void Form1_Load(object sender, EventArgs e)
{
this.webBrowser1.Navigate("https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png");
}
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");
}
4) 双击WebBrowser
控件以处理其DocumentCompleted
事件,并使用以下代码:
private void Form1_Load(object sender, EventArgs e)
{
this.webBrowser1.Navigate("https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png");
}
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");
}
这样,当图像比浏览器大时,它将适合浏览器。而且,当浏览器足够大时,它也不会调整大小。我自己测试了它,它对我有效。运行上述代码时有什么问题?将问题更新为您的意思,这样好吗?因为上面的代码没有给我相同的输出。请不要更新问题的方式,使答案看起来像是胡说八道。我回滚了更新。如果您阅读了答案并测试了解决方案,并且有任何问题,请告诉我该问题:)我只是用您给我的代码编辑了该问题,目的是向您展示该代码,但它对我还不起作用。如果我将documentCompleted事件与您回答的代码一起使用,并将“webBrowser1”修改为“web”(我的webbrowser名称),则它不起作用。我明白您的意思,但在这种情况下,最好不要触及原始问题,只在答案下添加一些注释。有时,如果需要,您可以在问题中添加更新部分。想象一下,如果你收到5个不同的答案,如果你想在问题中添加一些更新,原始问题会发生什么。没有人愿意阅读这样一个问题的答案,它对未来的读者永远不会有用。因此,让我们保持问题和答案的整洁:)