C#richtextbox显示来自RTF的图像

C#richtextbox显示来自RTF的图像,c#,.net,image,richtextbox,rtf,C#,.net,Image,Richtextbox,Rtf,为什么我的richtextbox只显示RTF代码而不显示图像? 以下是rtf代码: {\pict\pngblip\picw800\pich600\picwgoal6400\pichgoal4800\hex 89504E470D0A1A0000000D49484520000032000000258002000000015141527000000017352474200AECE90000004674414D410000B18F0BFC610500000009704859730000EC20000EC

为什么我的richtextbox只显示RTF代码而不显示图像? 以下是rtf代码:

{\pict\pngblip\picw800\pich600\picwgoal6400\pichgoal4800\hex 89504E470D0A1A0000000D49484520000032000000258002000000015141527000000017352474200AECE90000004674414D410000B18F0BFC610500000009704859730000EC20000EC20115284A8000000FFA54944154785EEC55601557D67E148A06E9EE2DD1AF5AD20450AB4B805A2EE21463C21EE8EBBBB3B757DA210B44071282EE9284FFC89D79F35E457CFE45757B9CFE457B9CFE45757B9CFE457B758CFE45798CFE457B758CFE758CFE457B798CFE758CFE758CFE758CFE758CFE457B758CFE758CFC8CFDD9D364FC1FC718CE90BC64D438C9D8E18336D7EF6C8498393B307452504C50684C500FCC306FB8745FB8746FB8744FB05332207320645307C83103E8870446018C01B10200E0C5F00F617832FC8255780C34C07DE02074C116EBE83047C824CE0EA4D0058ABE80416E4A450F6810015D28F00F80522038AECE5330D19212B0017E7070E7207070707070F467E477E07070707077E477E47E070707077E07017B777E47E47E47E47E47E070E47E077E070E070E070E070E077B777B777B777E7B7B7E07017EB6 B6 B6 B6 B6 BB6 BB6 BB6 BB6 B6 BB6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 F935F7767月6日,7月7日,7月7日,7月7日,7月7日,7月7日,7月7日,7月7日,7月7日,7月6日,7月7日,7月7日,7月7日,7月7日,7月7日,7月7日,7月7日,7月7日,7月7日,7月7日,7月7日,7月7日,7日,7月7日,7日,7日,7日,7月7日,7日,7日,7日,7月7日,7日,7日,7日,7月7月6层,7层,7层,6层,7层,7层,7层,7层,7层,7层,7层,7层,7层,7层,7层,7层,7层,7层,7层,7层,7层,7层,7层,7层,7层,7层,7层,73DECBC11B65EDD6D3C01D6C3CBB5A7B00BA58B97F38C00DF0417F5740674B1746A778C8E7D9D00AC4300C443756810DA87BEB04AA23313B180C8FC76430DD61243418B3233119830A30563906BE2CBF15FAE39956094B17867A1102FA38FAF776EB4517814EDF9B4F9CCF9A2BE5B6771038DC0C2C20C200B5B5E5C2C20C200C200B5B5C4038D0014B10B1017B1017B104047B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 BBBBBB6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 6 6 6 6 6 6 6 6 6 6 6 6 6 6 B806月6日,6月6日,6月6日,6月6日,6月6日,6月6日,6月6日,6月6日,6月6日,6月7日,6月6 6 6 6月6日,6月6日,6月6月6日,6月6 6日,6 6月6日,6 6月6日,6月6月6日,6 6月6日,6月6 6 6 6 6 6 6 6 6 6 6月6日,6月6 6 6 6月6日,6日,6月6 6 6 6 6月6 6 6 6 6 6月7日,6 6 6月6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6月6月6月6日,6日,6月6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6月6 6 6 6 6 6 6 6 6 6 6 6 6月6月6月6月6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 A148DDCBA75FBE0274783A3126112EDEF1230C035106916712C7556EB69EBEE61F396DDEF2CD05BBF3771EF855B0A3643F637BF13EC0B6A2BD120F0EBC740AC4F5BC3FE0E21BDF0286F41CF093677397C3CE043A27E60005A86F4CBA16D594CF3080D4DE7064EC3B46B888E0585AD3CD4D4D06A18AD3CD4A16D06B412B394C6080E981C7023B4B4568080A567CF018036777CF038EBC4018C5018EBC348C5018C1895091482851C4BB908C8B19860C1E913C102F6E3A939E52A0916A27A8E4504B5B5960319060314C389631D3AA3AD2BF08E0CF18A09F33026902D26BB6E702382CDC07C187D623C4CE2BD4986345BB0444BB06C6B80501C78AF5088EF304009D4205528770AF60E1F2A294966F580270AC818263A50444A70D40A70D40E678E678EA5D2040444A70D4756567C5959C5507B9C5907C5959C501C9C5907B90F4B539825389C2AB04F61D2CDD770852D5A2D02C117Fe2F4D9B16E674B8A0ECF987478FA44C09119138FCD9C746CE68493332D506F9A617ECDE1F881C67D3D74EC3FDAF5FA7F82E759ABC0A333000000049454E44AE426082}

其实它太长了,只是删除了一些

但是,如果格式以->{rtf……..开头,它就会显示图像


提前感谢

要在富文本框中显示内嵌图像,您必须执行以下操作:

//A RichTextBox with an image.
private void ImageRTB()
{
    //Create a new RichTextBox.
    RichTextBox MyRTB = new RichTextBox();

    // Create a Run of plain text and image.
    Run myRun = new Run();
    myRun.Text = "Displaying text with inline image";
    Image MyImage = new Image();
    MyImage.Source = new BitmapImage(new Uri("flower.jpg",    
    UriKind.RelativeOrAbsolute));
    MyImage.Height = 50;
    MyImage.Width = 50;
    InlineUIContainer MyUI = new InlineUIContainer();
    MyUI.Child = MyImage;

    // Create a paragraph and add the paragraph to the RichTextBox.
    Paragraph myParagraph = new Paragraph();
    MyRTB.Blocks.Add(myParagraph);

    // Add the Run and image to it.
    myParagraph.Inlines.Add(myRun);
    myParagraph.Inlines.Add(MyUI);

   //Add the RichTextBox to the StackPanel.
    MySP.Children.Add(MyRTB);
}
richTextBox1.Rtf = @"{\rtf1" + picText + "}";

假设WinForms RichTextBox是,则RichTextBox的内容必须是有效的RTF文档,因此它确实需要以
{\rtf1
元素开头,并以右括号
}
结尾

例如:

{\rtf1{\pict\pngblip\picw800\pich600……诸如此类……44AE426082}

如果您的rtf glob只是一个字符串变量,那么您可以执行以下操作:

//A RichTextBox with an image.
private void ImageRTB()
{
    //Create a new RichTextBox.
    RichTextBox MyRTB = new RichTextBox();

    // Create a Run of plain text and image.
    Run myRun = new Run();
    myRun.Text = "Displaying text with inline image";
    Image MyImage = new Image();
    MyImage.Source = new BitmapImage(new Uri("flower.jpg",    
    UriKind.RelativeOrAbsolute));
    MyImage.Height = 50;
    MyImage.Width = 50;
    InlineUIContainer MyUI = new InlineUIContainer();
    MyUI.Child = MyImage;

    // Create a paragraph and add the paragraph to the RichTextBox.
    Paragraph myParagraph = new Paragraph();
    MyRTB.Blocks.Add(myParagraph);

    // Add the Run and image to it.
    myParagraph.Inlines.Add(myRun);
    myParagraph.Inlines.Add(MyUI);

   //Add the RichTextBox to the StackPanel.
    MySP.Children.Add(MyRTB);
}
richTextBox1.Rtf = @"{\rtf1" + picText + "}";

实际上,wpf richtextbox不使用rtf格式,而是使用xaml,您需要将rtf转换为xaml。假设WinForms richtextbox是,richtextbox的内容必须是有效的rtf文档,因此它确实需要以
{\rtf1
元素开头,以右括号
}结尾
@LarsTech但我怎么能做到呢?我使用的是winform而不是wpf。不管怎样,有没有办法获取图像的rtf代码?从{rtf……}开始?还是手动操作?谢谢各位,我已经解决了这个问题。我只是直接将图像放入richtextbox并检索其rtf代码:'image img;img=image.FromFile(FromFile);Clipboard.SetDataObject(img);DataFormats.Format df;df=DataFormats.GetFormat(DataFormats.Bitmap);RichTextBox1.CanPaste(df);“但是我怎么能做到这样呢?从我的那张以{pict…@WylanOsorio}开头的那张照片来看,
{\pict…}是怎么回事
存储的东西?只是一个字符串吗?我在桌面上有这个图像,然后我将它拖到系统中,然后直接拖到pictureBox。当单击“保存”按钮时,它将得到它的等效代码,即{/pict…},但不是这样,而是有办法得到{/rtf….图像的内容?@WylanOsorio现在我完全搞不懂你在做什么。我不知道
将它拖到系统中的意思。你指的是什么保存按钮?你可能需要备份一点,从头开始:你想做什么?谢谢各位,我已经解决了问题。我只是直接告诉你在richtextbox中删除图像并检索其rtf代码