Visual Studio 2010, .NET 4, VB.NET
Здравствуйте,
Я пишу небольшую программу для преобразования фрагментов LaTeX в изображения, которые можно вставлять в любую программу, в которую можно вставлять изображения. Это работает нормально, но следующий очевидный шаг - включить исходный код LaTeX в виде фрагмента метаданных в изображение, чтобы результаты могли быть изменены без необходимости перепечатывать все.
Мне удалось добавить заголовок PropertyItem с латексом, закодированным как байтовый массив ASCII в качестве его значения (id = 800, type = 2, value = System.Text.Encoding.ASCII.GetBytes (codestring)). Я проверяю, что PropertyItem действительно там, прежде чем пытаться поместить изображение в буфер обмена.
Затем я делаю Clipboard.SetImage (myImage). В результате удаляются все PropertyItems (мой заголовок плюс все остальное, что было там)! Я проверяю это, выполняя MsgBox (Clipboard.GetImage.PropertyItems.Count.ToString), который дает ноль.
Это меня очень огорчает. Кто-нибудь знает, что случилось?
Заранее спасибо!
Brian
Обновление : я выяснил, как переместить изображение в буфер обмена, а затем вернуться обратно, сохранив PropertyItems следующим образом:
Format = DataFormats.GetFormat(GetType(Image).FullName)
Dim dataObject As New DataObject
dataObject.SetData(Format.Name, image)
Clipboard.SetDataObject(dataObject)
Dim copiedImage As Image = CType(Clipboard.GetDataObject.GetData(Format.Name), Image)
Таким образом, скопированный образ имеет те же свойства объекта, что и оригинал. Тем не менее, новая проблема:
Другие программы больше не распознают то, что находится в буфере обмена, как изображение, что наносит ущерб всей цели. То есть, если я помещаю изображение в буфер обмена таким образом, когда я пытаюсь вставить в некоторый контекст, который принимает вставленные изображения, ничего не происходит.
Что делать?!