我需要将图片框中的图像和文本框中的文本一起复制到Windows剪贴板,以便将它们粘贴到Word中。
我使用以下代码:
Dim bmp As New Bitmap(pb1.Width, pb1.Height)
pb1.DrawToBitmap(bmp, New Rectangle(0, 0, pb1.Width, pb1.Height))
Dim dataobj As DataObject = New DataObject
dataobj.SetText("This image is a graph")
dataobj.SetImage(bmp)
Clipboard.SetDataObject(dataobj, True)
bmp.Dispose()
仅复制文本,但注释掉SetText
行会导致复制图像。
任何帮助将不胜感激。
答案 0 :(得分:1)
数据格式用于检索,具体取决于上下文,即位图将粘贴到Paint中,文本将粘贴到记事本中。
此代码演示您可以在.NET中检索它们。当您指定每种格式时
Dim data As New DataObject()
data.SetData(DataFormats.Bitmap, True, Me.pb1.Image)
data.SetData(DataFormats.Text, True, "This image is a graph")
Clipboard.SetDataObject(data, True)
Dim bResult As Bitmap = Clipboard.GetData(DataFormats.Bitmap)
Dim tResult As String = Clipboard.GetData(DataFormats.Text)
作为另一项测试,将图像和文本都放入Word中,然后将它们复制。然后检查tResult
和bResult
中的内容(当然评论SetDataObject
行)。您会注意到tResult
包含您的字符串,但bResult
为空。如果您能够确定从Word复制位图时的位图格式,并且在.NET中设置位图时使用该格式,则可以解决此问题。
修改强>
仅复制Word中的图像会将位图放入bResult
,但是当它与其他任何内容一起复制时,Clipboard.GetData(DataFormats.Bitmap)
为空。
答案 1 :(得分:0)
这可用于粘贴到Outlook电子邮件中:
' Put the image on the Clipboard
Clipboard.Clear()
Clipboard.SetImage(image)
Dim rtb As New RichTextBox
With rtb
' Paste the image into a RichTextBox and add the text
.Paste()
.AppendText("Your Text")
.SelectAll()
' Create a DataObject with the RTF and put it on the Clipboard
Dim dataObj As New DataObject
dataObj.SetData(DataFormats.Rtf, .SelectedRtf)
Clipboard.Clear()
Clipboard.SetDataObject(dataObj)
End With
答案 2 :(得分:-1)
尝试将位图直接放到剪贴板上,如:
Dim bmp As New Bitmap(pb1.Width, pb1.Height)
pb1.DrawToBitmap(bmp, New Rectangle(0, 0, pb1.Width, pb1.Height))
Dim dataobj As DataObject = New DataObject
dataobj.SetText("This image is a graph")
Clipboard.SetDataObject(dataobj, True)
Clipboard.SetDataObject(bmp, True)
bmp.Dispose()