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

HTML img tag does not render source image in WebKit.NET browser in C#

我正在尝试将我的 WebKitBrowser DocumentText 设置为包含本地 SVG 文件路径作为图像源的 HTML 字符串。 实际上我想在网络浏览器中显示 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;

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

谁能告诉我这段代码有什么问题吗??

我终于找到问题所在了。 WebKitBrowser的DocumentText属性是一个字符串,在它的set方法中,HTMLtext被传递给loadHTMLString方法

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

DocumentText 属性 在未指定 URL 时使用。但是这里我想从指定地址加载图像。因此,如果使用诸如设置 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:///" 和最后一个“/”。