本文主要是介绍解决WINFORM下面rtf不能在IE上面显示图片的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近做了一个项目.使用WINFORM做的。
后台用C/S模式通过RICHTEXTBOX录入了RTF格式的String类型的数据
在前台需要通过网页显示出来。在网上找了很多控件。原理大多数基于RTF转换成HTML。
试了许多,但是都只能转换文字。不能转换图片。
网上还有一种方法是分离RTF格式的文字和图片。学习了一下,比较复制。放弃了。
最后学习了WPF。记得WPF APPLICATION 与WPF 浏览器应用程序里面都有个控件RICTEXTBOX,
可以通过读写XAML存储图文。突发奇想。能够使用在WINFORM下面加入WPF控件吗
实验了一下。是可以的。
最后解决方案。
编写了一个WPF用户自定义控件。里面加入RICHTEXTBOX。
在加入方法。
public string toxaml()
{
// Stream s = new MemoryStream(); // 其他的什么Stream类型都没问题
XamlWriter.Save(
MemoryStream s=new MemoryStream();
TextRange documentTextRange = new TextRange(this.richTextBox1.Document.ContentStart, this.richTextBox1.Document.ContentEnd);
documentTextRange.Save(s, DataFormats.XamlPackage);
return Convert.ToBase64String(s.ToArray());
//return Convert.ToString(s.ToArray());
}
这个方法主要实现把RICHTEXTBOX里面的内容转换成XAML格式。
在在WINFROM里面通过添加引用加入该控件。
浏览器要显示图文就可以通过WPF浏览器呈现技术
加入RICHTEXTBOX。
在通过一下这段代母读出来
TextRange tr = new TextRange(this.richTextBox1.Document.ContentStart, this.richTextBox1.Document.ContentEnd);
convert string to MemoryStream
//MemoryStream ms = GetMemoryStreamFromString(buffer);
//tr.Load(ms, DataFormats.XamlPackage);
MemoryStream s = new MemoryStream((Convert.FromBase64String(buffer)));
// XmlReader xr = XmlReader.Create(s);
//FlowDocument fd = XamlReader.Load(xr) as FlowDocument;
//this.richTextBox1.Document = fd;
TextRange TR = new TextRange(this.richTextBox1.Document.ContentStart, this.richTextBox1.Document.ContentEnd);
TR.Load(s, DataFormats.XamlPackage);
这篇关于解决WINFORM下面rtf不能在IE上面显示图片的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!