我想将图片插入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);
}
也无法看到图像。这有什么不对。
非常感谢。
答案 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();