【问题标题】:Making WebBrowser Transparent使 WebBrowser 透明
【发布时间】:2023-03-29 14:40:01
【问题描述】:

我正在尝试使我的 Windows 7 Phone 应用程序上的 WebBrowser 控件透明,因此它可以与应用程序的其余部分具有相同的主题,但我尝试过的任何事情都没有成功。 我仍然需要能够看到 HTML 文本,但只是让背景透明。在控件中使用 CSS 似乎不起作用,我也无法通过 XAML 让它工作。这可能吗?这个post,并不令人鼓舞。

【问题讨论】:

    标签: windows-phone-7


    【解决方案1】:

    这是不可能的。浏览器引擎总是为 HTML 页面呈现背景颜色。您可以为 BODY 标签指定颜色,但“透明”的值总是以白色结束。您分配给 WebBrowser XAML 元素的背景颜色实际上没有任何效果,因为浏览器引擎实际上是在其顶部呈现。

    与您的应用主题相匹配的最佳选择是通过 InvokeScript 将应用主题背景颜色传递到 HTML 页面中,然后将其设置在 BODY 元素上的 Javascript 函数。这假定您可以控制正在加载的 HTML 内容。 (另外,不要忘记通过 IsScriptEnabled 启用脚本。)

    【讨论】:

    • 当然这对他处理图像背景没有帮助,因为大多数时候人们尝试这样做。
    • 我想我最终要做的是将整个页面呈现为 Web 浏览器控件,并将背景设置为我的主题。 (我可以完全控制我正在渲染的网站,所以我将添加一些 CSS 以使其与主题相匹配)。
    【解决方案2】:

    作为尝试加载一些初始内容以将 webbrowser 控件设置为显示颜色以匹配页面背景的替代方法(或可能除了),您可以将控件的不透明度设置为 0,然后更改当控件上的Navigated 事件第一次被触发时,它为 1。

    【讨论】:

      【解决方案3】:

      代码解决方案:

      private void SetHtml(WebBrowser browser, string body)
      {
          string style = "<style>";
          string background = GetColorForCss("PhoneBackgroundColor");
          string foreground = GetColorForCss("PhoneForegroundColor");
          style += "body{background-color: " + background + "; color: " + foreground + ";}";            
          style += "</style>";
          string html = "<!DOCTYPE html><html><head>" + style + "</head><body>" + body + "</body></html>";
      
          Color phoneBackground = (Color)Application.Current.Resources["PhoneBackgroundColor"];
          browser.Background = new SolidColorBrush(phoneBackground);
          browser.Opacity = 0;
          browser.NavigateToString(html);
          browser.LoadCompleted += browser_LoadCompleted;
      
      
      }
      
      void browser_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
      {
          _browser.OpacityMask = null;
          _browser.Opacity = 1;
      }
      

      【讨论】:

        【解决方案4】:

        您可以为 webbrowser 组件中显示的 html 内容设置样式,因此该组件将具有您应用的外观和感觉

                    web_browser.NavigateToString(html: "<html style='background-color:" + BACKGROUND_THEME_COLOR + ";color:" + FOREGROUND_THEME_COLOR + ";font-size:15pt;'>" + your_html_content + "</html>");
        

        【讨论】:

          猜你喜欢
          • 2013-01-29
          • 1970-01-01
          • 1970-01-01
          • 2011-02-16
          • 2013-04-18
          • 2013-11-09
          • 1970-01-01
          • 1970-01-01
          • 2014-03-08
          相关资源
          最近更新 更多