我正在创建一个可以轻松插入图像的 RichTextBox 子类。我提到这个问题 https://stackoverflow.com/questions/542850/how-can-i-insert-an-image-into-a-richtextbox开始,但我无法让生成的 RTF 字符串工作。当我尝试设置 RTB 的 SelectedRtf 时,出现错误并显示“文件格式无效”。这是我的代码:
internal void InsertImage(Image img)
{
string str = @"{\pict\pngblip\picw24\pich24 " + imageToHex(img) + "}";
this.SelectedRtf = str; // This line throws the exception
}
private string imageToHex(Image img)
{
MemoryStream ms = new MemoryStream();
img.Save(ms, ImageFormat.Png);
byte[] bytes = ms.ToArray();
string hex = BitConverter.ToString(bytes);
return hex.Replace("-", "");
}
我已经看到了我想要做的事情的工作示例,但是使用了 wmetafiles,但我不想使用该方法。有任何想法吗?
Thanks,
Jared
我放弃了手动插入 RTF 的尝试,并决定使用剪贴板方法。我从这种类型的解决方案中发现的唯一缺点是它清除了剪贴板内容。我只是在粘贴图像之前保存它们,然后将其设置回来,如下所示:
internal void InsertImage(Image img)
{
IDataObject obj = Clipboard.GetDataObject();
Clipboard.Clear();
Clipboard.SetImage(img);
this.Paste();
Clipboard.Clear();
Clipboard.SetDataObject(obj);
}
做工精美。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)