2017-07-05 194 views
1

我正在尋找以編程方式將base64字符串轉換爲圖像,然後將其插入到richTextBox中。無法將圖像從剪貼板粘貼到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

您可以嘗試首先粘貼非流式位圖嗎? 'richTextBox1.Paste(DataFormats.GetFormat(DataFormats.Bitmap));'強烈類似於[msdn代碼示例](https://msdn.microsoft.com/de-de/library/23kah9ca(v = vs.110)。 aspx)所以我懷疑是有問題,但也許你的位圖不能以任何理由工作 – Kartoffel

+0

我似乎有同樣的問題 - 我從文件中加載了一個PNG文件,但它在執行程序時無法粘貼。 PNG不會複製到我的剪貼板成功,我可以手動將其粘貼到richTextBox雖然:( – user2884505

+0

你可以嘗試重現從msdn的整個代碼我以前鏈接過嗎?也許問題是其他地方... – Kartoffel

回答

1

似乎在粘貼後設置richTextBox的文本屬性會刪除圖像。我改了行

richTextBox1.Text += "\n"; 

Clipboard.SetText("\n"); 
richTextBox1.Paste(); 

這是一個非常可怕的解決方案,但它的工作原理,我在最後期限:)我可能是不那麼哈克其他建議!

+0

將數據分配給「文本」將原始內容替換爲RichTextBox的內容_as string_,加上給定的字符串,你必須以某種方式到達RichTextBox的原始底層RTF數據。 – Nyerguds