WebBrowser如何插入图片?
如题。在Winform里面把WebBrowser打开了编辑模式,然后设置一个打开图片的对话框,选取图片之后再AppendChild之后却发现图片的地址开头自动加入:“about:”字样,导致图片地址获取失败。我是想将图片弄成相对地址的形式存在html里面!打开图片相关代码如下:
OpenFileDialog openfilejpg = new OpenFileDialog();
openfilejpg.Filter = "jpg图片(*.jpg)|*.jpg|gif图片(*.gif)|*.gif";
openfilejpg.FilterIndex = 0;
openfilejpg.RestoreDirectory = true;
openfilejpg.Multiselect = false;
if (openfilejpg.ShowDialog() == DialogResult.OK && openfilejpg.FileName.Length > 0)
{
filepath = openfilejpg.FileName;
filename = Path.GetFileName(openfilejpg.FileName);
//复制图片到程序目录下的image文件夹
File.Copy(filepath, @"image/" + filename, true);
HtmlElement el = this.webBrowserBody.Document.CreateElement("DIV");
el.InnerHtml = "<img src=image\\" + filename + "></img>";
MessageBox.Show(el.InnerHtml);
this.webBrowserBody.Document.Body.AppendChild(el);
}
messagebox show出来的结果如下所示:
为何会自动添加“about:”这个啊??各位高手给解答一下谢谢!!
PS:还有一个方法,就是:
webBrowserBody.Document.ExecCommand("InsertImage", true, null);
虽然这样也可以添加图片,可是我怎么获取这个图片地址呢?我怎么把这图片修改为相对路径呢?
各位高手给解答一下谢谢!!
--------------------编程问答-------------------- 没人回我? --------------------编程问答-------------------- 你这样写它认为是一个相对路径,我想你WebBrower没有加载任何页面吧?如果你加载其它页面,就不是about了,就应该是当前加载页的路径了。你看看是不是! --------------------编程问答-------------------- 我把你的修改后的
--------------------编程问答--------------------
private void button1_Click(object sender, EventArgs e)
{
string filepath = "";
string filename = "";
OpenFileDialog openfilejpg = new OpenFileDialog();
openfilejpg.Filter = "jpg图片(*.jpg)|*.jpg|gif图片(*.gif)|*.gif";
openfilejpg.FilterIndex = 0;
openfilejpg.RestoreDirectory = true;
openfilejpg.Multiselect = false;
if (openfilejpg.ShowDialog() == DialogResult.OK && openfilejpg.FileName.Length > 0)
{
filepath = openfilejpg.FileName;
filename = Path.GetFileName(openfilejpg.FileName);
//复制图片到程序目录下的image文件夹
//File.Copy(filepath, "image/" + filename, true);
HtmlElement el = this.webBrowser1.Document.CreateElement("DIV");
// el.InnerHtml = "<input type='button' value='test'/>";
el.InnerHtml = "<img src='" + filepath + "'></img>";
// MessageBox.Show(el.InnerHtml);
this.webBrowser1.Document.Body.AppendChild(el);
}
}
非常感谢你的回复,你这样是没有错。假如我按你方法添加图片之后保存网页内容,然后我把程序移动到别的电脑用的话,那网页内容里面图片的地址还是我原来电脑的图片地址啊,在新电脑里显示的话就是一个叉了...
所以我要做一个相对地址,存到exe程序同文件夹下的image文件夹里,网页内容保存的也是这个image里面的地址。这样我image跟着程序走就不会出现地址不存在了... --------------------编程问答--------------------
你好,能再说详细一点吗?谢谢!! --------------------编程问答-------------------- 不知道顶一下 --------------------编程问答--------------------
例如: WebBrower.Navigate("http://www.google.com")
写在Load里
你再看看会是什么样的 --------------------编程问答-------------------- File.Copy(filepath,AppDomain.CurrentDomain.BaseDirectory +filename, true); --------------------编程问答--------------------
这样就载入了谷歌的首页了,我要插入图片貌似也插不了。同时,我在程序目录放置一个index.html,程序加载的生活载入它,然后我插入图片也不行... --------------------编程问答--------------------
这个图片复制的方式你放心,我可以在image里面都找到对应的图片,说明图片复制是OK的!! --------------------编程问答-------------------- 你把要显示的图先上传到程序中,在把其相对路径给要显示的 filepath
el.InnerHtml = "<img src='" + filepath + "'></img>";
--------------------编程问答-------------------- 用字符串操作把内个头截掉 那是WebBrowser的问题 --------------------编程问答--------------------
你是说把about给replace掉吗??我试过了,不行呀 --------------------编程问答--------------------
这个没问题啊,我即使把相对路径写入到filepath 也不行啊 --------------------编程问答-------------------- 支持一个! --------------------编程问答--------------------
晕!还没解决?
不是给你改过了?3楼的时候已经可以显示图片了吧?那加上10楼的,不就是可以移到另一个台机子上用了? --------------------编程问答--------------------
string filename = "";
string filepath = "";
OpenFileDialog openfilejpg = new OpenFileDialog();
openfilejpg.Filter = "jpg图片(*.jpg)|*.jpg|gif图片(*.gif)|*.gif";
openfilejpg.FilterIndex = 0;
openfilejpg.RestoreDirectory = true;
openfilejpg.Multiselect = false;
if (openfilejpg.ShowDialog() == DialogResult.OK && openfilejpg.FileName.Length > 0)
{
filepath = openfilejpg.FileName;
filename = Path.GetFileName(openfilejpg.FileName);
//复制图片到程序目录下的image文件夹
File.Copy(filepath,@"image/" +filename, true);
HtmlElement el = this.webBrowser1.Document.CreateElement("DIV");
el.InnerHtml = "<img src='" + filepath + "'></img>";
this.webBrowser1.Document.Body.AppendChild(el);
}
}
--------------------编程问答--------------------
还没解决啊,这样能行吗?大哥能不能贴相应的完整的code出来啊,我很急,很感谢你!! --------------------编程问答--------------------
你只是把filename改为filepath,html里面img的src还是绝对地址~!如果转到别的机器上面就显示不了图片了...我希望src里面放的是image里面图片的地址! --------------------编程问答--------------------
17楼不就是嘛。。。。 --------------------编程问答--------------------
你查看一下webBrowserBody.DocumentText就知道里面src的地址还是绝对地址啊... --------------------编程问答-------------------- 有人吗? --------------------编程问答-------------------- 有人吗?
补充:.NET技术 , C#