无法将图片插入RichTextBox

时间:2010-08-26 13:03:00

标签: c# winforms image richtextbox rtf

我想将图片插入RichTextBox。我在编码中添加图片。

这是主要代码,添加了jpg图像:

MemoryStream memoryStream = new MemoryStream();
img.Save(memoryStream,System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] bytes = memoryStream.ToArray();
String width = img.Width.ToString();
String height = img.Height.ToString();
String hexImgStr=BitConverter.ToString(bytes, 0).Replace("-","");
String picStr=@"{\pict\jpegblip\picw"+width+@"\pich"+height+
              @"\picwgoal"+width+@"\pichgoal"+height+" "+hexImgStr+"}";

然后我将“picStr”插入rtf文档。但是图像无法看到。我认为“hexImgStr”可能是错的。我还以另一种方式生成“hexImgStr”:

FileStream fs = new FileStream(imgPath,FileMode.Open);
BinaryReader br=new BinaryReader(fs);
//byte[] bytes=new byte[fs.Length];
String hexImgStr="";
for (long i = 0; i < fs.Length; i++)
{
    //bytes[i] = br.ReadByte();
    hexImgStr +=Convert.ToString(br.ReadByte(),16);
}

也无法看到图像。这有什么不对。

非常感谢。

2 个答案:

答案 0 :(得分:2)

这里失败的概率很高。首先将RTF插入正确的位置。真正的问题可能是您生成的确切格式。图像是RTB的嵌入式OLE对象,它们需要一个描述对象的元数据头。在.NET中没有任何支持,OLE嵌入在很久以前就像渡渡鸟一样。

我知道的一件事是通过剪贴板将图像转换为RTB。像这样:

    private void button1_Click(object sender, EventArgs e) {
        using (var img = Image.FromFile("c:\\screenshot.png")) {
            Clipboard.SetImage(img);
            richTextBox1.Paste();
        }
    }

根据需要调整SelectionStart属性以确定图像的插入位置。

答案 1 :(得分:1)

首先将图片添加到图片框,然后在按钮点击事件

中添加以下代码

手动添加图片..... image.FromFile( “源”);

Clipboard.SetImage(PictureBox1.Image);

this.RichTextBox1.Paste();