Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF RichTextBox能否显示二进制图片内容?_Wpf_Richtextbox_Rtf_Image - Fatal编程技术网

WPF RichTextBox能否显示二进制图片内容?

WPF RichTextBox能否显示二进制图片内容?,wpf,richtextbox,rtf,image,Wpf,Richtextbox,Rtf,Image,我试图在新的WPF应用程序中显示在遗留系统中创建的RTF文件,但遇到了一些困难。旧RTF文件包含一张格式化为二进制jpegblip的图片,当读入RichTextBox时,会导致此异常: Unrecognized structure in data format 'Rich Text Format'. Parameter name: stream 我将文件缩减到最低限度以隔离问题,并以以下开头行结束。此帖子的二进制数据已被删除: {\rtf1{\pict\picw2700\pich2700\pi

我试图在新的WPF应用程序中显示在遗留系统中创建的RTF文件,但遇到了一些困难。旧RTF文件包含一张格式化为二进制jpegblip的图片,当读入RichTextBox时,会导致此异常:

Unrecognized structure in data format 'Rich Text Format'. Parameter name: stream
我将文件缩减到最低限度以隔离问题,并以以下开头行结束。此帖子的二进制数据已被删除:

{\rtf1{\pict\picw2700\pich2700\picwgoal2700\pichgoal2700\jpegblip\bin9889
这仍然导致了一个异常,因此我将二进制数据转换为十六进制,并创建了一个新文件,开头有一行:

{\rtf1{\pict\picw2700\pich2700\picwgoal2700\pichgoal2700\jpegblip
控件正确显示了包含十六进制数据的文件


是否有人能够将包含二进制图片数据的文件加载到RichTextBox控件中,或者如果加载失败,是否有关于RichTextBox支持RTF规范的定义语句?

我甚至不确定Microsoft是否知道RichTextBox实现了什么。他们的RTF思想在太空中自由浮动。请参阅MS Word、写字板、众多传统丰富的编辑控件等

这篇文章中有一些关于在.NET代码中使用COM对象的评论,这在某种程度上是可以预测的,但是微软没有指定它们遵循规范的哪些部分。-如果包装得当,可以在WPF中使用它们

如果您只需要显示文档,您可能会询问是否所有用户都将使用Word。然后,您就可以嵌入Word文档查看器和presto,问题就解决了。如果您的软件在办公室中使用,则很容易添加依赖项


我可能会仔细阅读这种格式,直到我知道它是如何工作的。然后在我的程序中,我将RTF文件读入缓冲区,获取原始对象数据,以某种方式进行转换,用更新的对象替换这些对象,然后将其传递给控件。

对于我来说,这段代码工作得很好。我甚至可以从数据库表中提取它

<RichTextBox Height="100" HorizontalAlignment="Left" Margin="306,30,0,0" Name="rtfMain" VerticalAlignment="Top" Width="200" />


rtfMain.Selection.Load(new FileStream(@"C:\temp\document.rtf", FileMode.Open), DataFormats.Rtf);

谢谢你的链接。不幸的是,在所有客户机上安装Word并不是查看和编辑的选项,这就是为什么我们的产品首先使用RTF的原因。看起来我们正处于这样一种情况,在这些遗留产品上可能需要使用Word automation进行转换。这根本没有解决最初的问题。我描述的问题是加载带有二进制图像数据的RTF文件。RTF是二进制的,不管它是否包含图像。我已经尝试过使用图像和不使用图像,并在一个二进制的rtf文件中使用图像。也许我的回答会帮助别人。干杯,你错过了什么。RTF规范允许将图像编码为二进制,例如jpegblip\bin9889或十六进制,例如jpegblip。这与文件本身在磁盘上的存储方式无关,而与该文件对图像的编码方式无关。这个问题并不像你认为的那样直截了当。