我希望以编程方式将base64字符串转换为Image,然后将其插入到richTextBox中。
现在我将字符串加载到流中并将其转换为Image。然后我将其加载到剪贴板上并尝试粘贴。但是,当我执行代码时,没有任何内容粘贴到richTextBox。运行代码后,图像在我的剪贴板中正确设置,我可以手动将其粘贴到richTextBox中 - 它似乎无法以编程方式工作。
这是我的代码:
byte[] img_bytes = Convert.FromBase64String(imgStr);
using (var ms = new MemoryStream(img_bytes, 0, img_bytes.Length))
{
Image img = Image.FromStream(ms, true);
Bitmap imgb = (Bitmap)Bitmap.FromStream(ms);
Clipboard.SetDataObject(img);
Console.WriteLine(Clipboard.ContainsImage()); // Prints True
richTextBox1.Paste(DataFormats.GetFormat(DataFormats.Bitmap));
Console.WriteLine(richTextBox1.CanPaste(DataFormats.GetFormat(DataFormats.Bitmap))); // Prints True
richTextBox1.Text += "\n";
}
更新:粘贴图像后设置文本字段似乎会删除图像。我想现在的问题是,我如何同时拥有图像和文本?
答案 0 :(得分:1)
看似在粘贴后设置richTextBox的文本属性是删除图像。我改变了行
richTextBox1.Text += "\n";
到
Clipboard.SetText("\n");
richTextBox1.Paste();
这是一个非常可怕的解决方案,但它有效,我正处于截止日期:)我愿意接受其他不太苛刻的建议!