【发布时间】:2012-01-11 20:21:00
【问题描述】:
Visual Studio 2010、.NET 4、VB.NET
你好,
我正在编写一个小程序来将 LaTeX sn-ps 转换为可以粘贴到任何可以粘贴图像的程序中的图像。它工作正常,但下一个明显的步骤是将源 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) 来检查这一点,它给出了零。
这让我很伤心。有谁知道怎么回事?
提前致谢!
布赖恩
更新:我已经想出了如何将图像移动到剪贴板上,然后在保留 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)
这样,复制的图像与原始图像具有相同的 PropertyItems。然而,新的问题:
其他程序不再将剪贴板上的内容识别为图像,这违背了整个目的。即,如果我以这种方式将图像放在剪贴板上,当我尝试粘贴到某个接受粘贴图像的上下文中时,什么也没有发生。
怎么办?!
【问题讨论】:
标签: vb.net image metadata clipboard