Как скопировать и вставить изображение из файла .rtf в поле rich text box в поле picture
Что мне нужно сделать:
Всем привет! Мне нужно скопировать изображение в буфер обмена из файла .rtf, открытого в поле форматированного текста. Затем вставьте изображение в графическое поле. Я долго искал, и копирование из графического окна(PBX) для вставки в Форматированное текстовое поле(RTB) очень распространено. Но, кажется, я не могу найти ничего, что говорит мне, как скопировать и вставить другой способ, кроме кода, которым я делюсь ниже? Может ли кто-нибудь помочь мне в этом, например, пример кода, добавить к коду, которым я поделился, ссылку и т. д.? Любая помощь будет очень признательна!!! Я забыл упомянуть, что работаю в VB.NET, VS2015, и код, которым я поделился, является переводом с C#(?).
Что я уже пробовал:
Сначала я вставляю скриншот своего приложения в RTB. Затем, используя следующий код, я могу успешно скопировать изображение в буфер обмена и вставить его в АТС. Я также могу сделать то же самое, скопировав изображение с веб-страницы, вставив его в RTB, скопировав изображение в буфер обмена, а затем вставив его в АТС. Чтобы проверить это, я делаю снимок экрана или копирую изображение с веб-страницы, вставляю его в RTB моего приложения, очищаю и проверяю, что буфер обмена пуст, чтобы убедиться, что моя процедура копирования действительно работает, копирую изображение из RTB, проверяю буфер обмена, чтобы убедиться, что изображение было скопировано, а затем вставляю изображение в АТС.
Однако, хотя это отлично работает для изображений, которые я только что захватил таким образом, похоже, что это не работает для изображения, содержащегося в файле .rtf, который я открываю в своем приложении??? В файле .rtf есть одно изображение, а затем какой-то текст. Процедура копирования, которую я использую, на самом деле копирует изображение в открытый файл .rtf в RTB, но не копирует изображение в буфер обмена??? Теперь я могу вставить скопированное изображение в RTB, создав дубликат изображения, но оно не будет вставлено в АТС, потому что вставка зависит от того, какое изображение находится в буфере обмена.
мой вопрос:
1. Как скопировать изображение (то есть в соответствии с тем, что мне нужно сделать (выше) в буфер обмена, а затем вставить его в поле изображения?
2. Как определить, какое изображение находится в файле .rtf, когда я открываю его в своем приложении? Я уже пробовал: RichTextBox1.SelectionType.ToString, который приводит к типу: Object. Я также могу обнаружить изображение с помощью: If Description.Rtf.Contains("\pict\wmetafile8\") Потом Я.Описание.[Select](0, 1), но как мне получить тип изображения, чтобы скопировать его в буфер обмена?
3. Когда я выбираю и копирую изображение в файле .rtf, почему оно не копируется в буфер обмена? Буфер обмена пуст, но я могу вставить изображение обратно в RTB??? Скопировано ли изображение в память??? Как получить скопированное изображение в буфер обмена? Или я могу каким-то образом получить скопированное изображение для вставки в АТС???
код:
'PROJECT: Copy an image from Richtextbox and paste it in a Picturebox 'SOURCE CODE (Part 1): https://social.msdn.microsoft.com/forums/en-US/be9c1008-0f7a-4fdd-9736-7698d2f90eb9/copy-an-image-from-richtextbox-and-paste-it-in-a-picturebox 'Copy The Image To Clipboard: Clipboard.Clear() Me.RichTextBox1.[Select](0, 1) If (Me.RichTextBox1.SelectionType And RichTextBoxSelectionTypes.Object) = RichTextBoxSelectionTypes.Object Then RichTextBox1.Copy() End If 'Paste The Image Into PBX From Clipboard: Dim idata As IDataObject = Clipboard.GetDataObject() If idata.GetDataPresent("System.Drawing.Bitmap") Then Dim imgObject As Object = idata.GetData("System.Drawing.Bitmap") If imgObject IsNot Nothing Then Dim img As Image = TryCast(imgObject, Image) If img IsNot Nothing Then PictureBox1.Image = img End If End If End If