2010-08-26 15 views
2

Je souhaite insérer une image dans un RichTextBox. J'ajoute l'image dans le codage.Impossible d'insérer une image dans RichTextBox

Ce code est important, en ajoutant une image 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 [email protected]"{\pict\jpegblip\picw"[email protected]"\pich"+height+ 
       @"\picwgoal"[email protected]"\pichgoal"+height+" "+hexImgStr+"}"; 

Puis-je insérer le "picStr" au document rtf. Mais l'image ne peut pas être vue. Je pensais que "hexImgStr" peut-être mal. Je génère également le "hexImgStr" d'une autre manière:

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); 
} 

L'image ne peut pas être vue non plus. Qu'est ce qui ne va pas avec ça.

Merci beaucoup.

Répondre

2

Il y a une forte probabilité d'échec ici. Cela commence par l'insertion du RTF au bon endroit. Le vrai problème est probablement le format exact que vous générez. Les images sont des objets OLE incorporés pour RTB, ils ont besoin d'un en-tête de métadonnées qui décrit l'objet. Il n'y a aucun support pour cela dans .NET, l'intégration d'OLE a été le chemin du dodo il y a longtemps.

Une chose que je sais qui fonctionne est d'obtenir une image dans un RTB à travers le presse-papiers. Comme ceci:

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

Ajustez la propriété SelectionStart comme nécessaire pour déterminer où l'image est insérée.

1

d'abord ajouter une image à picturebox, puis ajoutez ci-dessous le code à l'intérieur du clic bouton événement

Ou ajouter l'image manuellement ..... Image.FromFile ("Source");

Clipboard.SetImage(PictureBox1.Image); 

this.RichTextBox1.Paste();