在 Windows 表单应用程序中,网络浏览器中的内容会自动缩放的问题
Problems having content in webbrowser scale automatically in Windows Form Application
我正在尝试创建一个程序来滚动浏览我计算机上的文件并显示这些文件。到目前为止,这对我有用,但我得到的是实际大小的内容,因此网络浏览器添加了一个滚动条(很明显)。我希望内容自动缩放,使其适合网络浏览器而无需滚动。
代码:
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:
所以基本上,这个大图像需要自动缩放以完全适合浏览器。
谢谢大家。
作为选项,您可以处理 WebBrowser
控件的 DocumentCompleted
事件,并根据大小设置图像的样式。
例如:
1) 创建一个 Windows 表单项目
2) 在设计模式下打开 Form1 并在其上放置一个 WebBrowser
控件。
3) 双击窗体的title-bar来处理窗体的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:
注一
这只是您可以执行的操作的一个示例。您可以使决策更智能,例如检查图像大小是否小于浏览器大小,则不需要应用任何缩放。
注2-(这是我的选择)
如果将 WebBrowser
控件设置为 support showing modern content ,图像的更好样式将是:
img.Style = "max-width:100%;max-height:100%";
这样,当图像比浏览器大时,图像将适合浏览器。当浏览器足够大时,它也不会调整大小。
我正在尝试创建一个程序来滚动浏览我计算机上的文件并显示这些文件。到目前为止,这对我有用,但我得到的是实际大小的内容,因此网络浏览器添加了一个滚动条(很明显)。我希望内容自动缩放,使其适合网络浏览器而无需滚动。
代码:
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:
所以基本上,这个大图像需要自动缩放以完全适合浏览器。
谢谢大家。
作为选项,您可以处理 WebBrowser
控件的 DocumentCompleted
事件,并根据大小设置图像的样式。
例如:
1) 创建一个 Windows 表单项目
2) 在设计模式下打开 Form1 并在其上放置一个 WebBrowser
控件。
3) 双击窗体的title-bar来处理窗体的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:
注一
这只是您可以执行的操作的一个示例。您可以使决策更智能,例如检查图像大小是否小于浏览器大小,则不需要应用任何缩放。
注2-(这是我的选择)
如果将 WebBrowser
控件设置为 support showing modern content ,图像的更好样式将是:
img.Style = "max-width:100%;max-height:100%";
这样,当图像比浏览器大时,图像将适合浏览器。当浏览器足够大时,它也不会调整大小。