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:///" 和最后一个“/”。
我正在尝试将我的 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:///" 和最后一个“/”。