解决WebBrowser背景不能透明的问题

WPF中使用WebBrowser控件时,WebBrowser是一个单独绘制句柄,除了显示层级更高外,还不支持透明。

在我前面的文章中,解决了不规则窗口下,将WebBrowser显示出来。

https://www.cnblogs.com/zhaotianff/p/18408345

但是在页面未加载出来之前,能看到短暂的白屏情况。

一开始我查阅了各种资料,尝试寻找设置WebBrowser透明的办法,以失败告终。

 

后面想了一个中转的办法,解决方案如下:

 

1、设置WebBrowser的宽高为一个非常小的数值,例如0.1

此时WebBrowser能正常工作,但是处于一个几乎看不见的状态,就达到了透明的效果。

1  <WebBrowser x:Name="webBrowser" Width="1" Height="1" LoadCompleted="webBrowser_LoadCompleted"></WebBrowser>

 

 

2、在WebBrowser的LoadComplete事件处理函数中,将WebBrowser的大小恢复

LoadComplete代表网页已经加载完成了,此时可以正常显示WebBrowser控件了。

1 private void webBrowser_LoadCompleted(object sender, NavigationEventArgs e)
2 {
3     var browser = sender as WebBrowser;
4     browser.Width = 527;
5     browser.Height = 501;
6 }

 

示例代码

posted @ 2024-10-17 11:05  zhaotianff  阅读(155)  评论(0)    收藏  举报