Csharp/C#教程:如何将图像插入RichTextBox?分享


如何将图像插入RichTextBox?

我看到的大多数示例都说要把它放在剪贴板上并使用粘贴,但这似乎不是很好,因为它会覆盖剪贴板。

我确实看到一种方法 ,使用pinvoke手动将图像放入RTF,将图像转换为wmf。 这是最好的方法吗? 我还能做更直接的事吗?

最直接的方法是修改RTF代码以自己插入图片。

在RTF中,图片的定义如下:

‘{‘ pict(brdr?&shading?&picttype&pictsize&metafileinfo?)data’}’问号表示控制字是可选的。 “data”只是hex格式的文件内容。 如果要使用二进制文件,请使用 bin控制字。

例如:

{pictpngblippicw10449pich3280picwgoal5924pichgoal1860 hex data} {pictpngblippicw10449pich3280picwgoal5924pichgoal1860bin binary data} 

pict =开始一个图片组, pngblip = png图片 picwX =图片的宽度(X是像素值) pichX =图片的高度 picwgoalX =图片的所需宽度,以缇为单位

因此,要插入图片,您只需打开图片,将数据转换为hex,将这些数据加载到字符串中,并在其周围添加RTF代码以定义RTF图片。 现在,您有一个包含图片数据的自包含字符串,您可以将其插入文档的RTF代码中。 别忘了关闭“}”

接下来,从RichTextBox(rtbBox.Rtf)获取RTF代码,将图片插入适当的位置,并设置rtbBox.Rtf的代码

您可能遇到的一个问题是.NET RTB对RTF标准没有很好的支持。

我刚刚创建了一个小应用程序*,它允许您快速测试RTB中的一些RTF代码并查看它如何处理它。 您可以在此处下载: RTB测试仪 ( https://sofzh.miximages.com/c%23/ppre codeprivate void button1_Click(object sender, EventArgs e) { openFileDialog1.Filter = Images .bmp;*.jpg;*.png;*.gif;*.ico”; openFileDialog1.Multiselect = false; openFileDialog1.FileName = “”; DialogResult result = openFileDialog1.ShowDialog(); if (result == DialogResult.OK) { Image img = Image.FromFile(openFileDialog1.FileName); Clipboard.SetImage(img); richTextBox1.Paste(); richTextBox1.Focus(); } else { richTextBox1.Focus(); } } }

如果您使用的是C ++,那么执行此操作的方法是通过OLE。 更具体地说,如果您在Google上搜索ImageDataObject,它将显示如何将HBITMAP插入RTF控件的C ++代码。 一个链接在这里 。

现在,我不知道这如何转化为.Net代码。 我目前没有时间通过​​细节工作。

我也在寻找同样的任务,发现了这个 – >

https://sofzh.miximages.com/c%23/ assuming the image is in your Resources var img = Resources.ImageWithTransparentBckgrnd; var g = Graphics.FromImage(img); using (var ms = new MemoryStream()) { img.Save(ms, ImageFormat.Png); IntPtr ipHdc = g.GetHdc(); Metafile mf = new Metafile(ms, ipHdc); g = Graphics.FromImage(mf); g.FillEllipse(Brushes.White, 0, 0, 16, 16); // size you want to fill in g.Dispose(); mf.Save(ms, ImageFormat.Png); IDataObject dataObject = new DataObject(); dataObject.SetData(“PNG”, false, ms); Clipboard.SetDataObject(dataObject, false); richTextBox1.Paste(); SendKeys.Send(“{RIGHT}”); richTextBox1.Focus(); }

上述就是C#学习教程:如何将图像插入RichTextBox?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/999086.html

(0)
上一篇 2021年12月27日
下一篇 2021年12月27日

精彩推荐