HTML img标记不会在C#中的WebKit.NET浏览器中呈现源图像

时间:2015-02-28 11:06:05

标签: c# html image webkit htmltextwriter

我试图将我的WebKitBrowser DocumentText设置为包含本地SVG文件路径作为图像源的HTML字符串。 实际上我想在Web浏览器中显示SVG文件。 这是我的代码:

        string SVGPath = "file:///D:/MySVGFiles 1/SVGSample01.svg";

        StringWriter stringWriter = new StringWriter();

        using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter))
        {
            writer.AddAttribute(HtmlTextWriterAttribute.Src, SVGPath);
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "50%");
            writer.AddAttribute(HtmlTextWriterAttribute.Height, "50%");

            writer.RenderBeginTag(HtmlTextWriterTag.Img); 
            writer.RenderEndTag(); 

        }

        string content = stringWriter.ToString();

        this.webKitBrowser1.DocumentText = content;

当我运行代码时,浏览器只显示图像画布,并且不呈现SVG文件。我也用JPG图像尝试了这个,并得到了相同的结果。

有人可以告诉我这段代码有什么问题吗?

1 个答案:

答案 0 :(得分:1)

我终于发现了什么是错的。 WebKitBrowser的DocumentText属性是一个字符串,在其set方法中,HTML文本被传递给loadHTMLString方法。

webView.mainFrame().loadHTMLString(value, null);

未指定URL时使用DocumentText属性。但在这里我想从指定的地址加载图像。因此,如果使用像设置DocumentText属性的标签将无效。我不得不调用loadHTMLString,当一个图像将使用其地址添加到HTML字符串时,URL必须是图像文件的目录。 根据我在https://groups.google.com/forum/#!topic/uni_webview/idiRRNIRnCU中找到的内容,我更改了代码并解决了问题! 以下是有效的代码:

 string fileName = "SVGSample01.svg";
 string URL = "file:///D:/MySVGFiles 1/";

 StringWriter stringWriter = new StringWriter();

    using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter))
    {
        writer.AddAttribute(HtmlTextWriterAttribute.Src, fileName);
        writer.AddAttribute(HtmlTextWriterAttribute.Width, "50%");
        writer.AddAttribute(HtmlTextWriterAttribute.Height, "50%");

        writer.RenderBeginTag(HtmlTextWriterTag.Img); 
        writer.RenderEndTag(); 

    }

    string content = stringWriter.ToString();

 (this.webKitBrowser1.GetWebView() as IWebView).mainFrame().loadHTMLString(content,URL);

确保URL字符串包含“file:///”和最后一个“/".