Dim ImageFormat1 As System.Drawing.Imaging.ImageFormat = Nothing
Dim DataObject1 As DataObject = Clipboard.GetDataObject()
'判斷可以轉換的格式,Bitmap總是可以通過
If DataObject1.GetDataPresent(DataFormats.Bitmap) = True Then
ImageFormat1 = System.Drawing.Imaging.ImageFormat.Bmp
ElseIf DataObject1.GetDataPresent(DataFormats.Tiff) = True Then
ImageFormat1 = System.Drawing.Imaging.ImageFormat.Tiff
ElseIf DataObject1.GetDataPresent(DataFormats.EnhancedMetafile) = True Then
ImageFormat1 = System.Drawing.Imaging.ImageFormat.Emf
ElseIf DataObject1.GetDataPresent(DataFormats.MetafilePict) = True Then
ImageFormat1 = System.Drawing.Imaging.ImageFormat.Wmf
ElseIf DataObject1.GetDataPresent(DataFormats.Dib) = True Then
ImageFormat1 = System.Drawing.Imaging.ImageFormat.MemoryBmp
Else
ImageFormat1 = System.Drawing.Imaging.ImageFormat.Jpeg
End If
Dim ImageName As String
Dim Image1 As Image = DataObject1.GetImage() '剪切后直接粘貼,則可行
'但例如,從QQ復制的圖片,是Png格式的檔案,但不在DataObject1.ContainsFileDropList,而上述GetImage方法也無法獲得
If Image1 Is Nothing Then
Dim J As Integer, MemoryStream1 As System.IO.MemoryStream = Nothing
Dim STR1() As String = DataObject1.GetFormats()
For J = 0 To STR1.Count - 1 Step 1
MemoryStream1 = DataObject1.GetData(STR1(J), True)
If MemoryStream1 IsNot Nothing Then Exit For
Next J
Image1 = Image.FromStream(MemoryStream1, True, True) '出錯,引數無效,應該是MemoryStream1問題
ImageName = "" '怎樣獲得該圖形檔案原來的檔案名
Else
ImageName = "D:\Image1.bmp"
End If
Image1.Save(ImageName, ImageFormat1)
剪切板上有多種格式內容: 多個檔案、多個截圖、多行文本,請教以下問題:
1. 怎樣將剪切板上未知格式的圖形檔案,轉換為Bmp格式
2. 怎樣獲得該圖形檔案原來的檔案名
在這里,懇請不愿意回答的朋友不要作一些似是而非的答案,不愿意回答就不要作答!以免愿意回答的其他朋友出于避免搶題而回避了,謝謝各位!
uj5u.com熱心網友回復:
問題已經解決。原來,在截圖后,直接往RichTextBox粘貼,才判斷為圖片;
而如果,將截圖放在QQ或微信的輸入框,則已經成為檔案,然后復制,再往RichTextBox粘貼,此時,DataObject1.ContainsImage 和 DataObject1.ContainsFileDropList 均判斷為True,使用 DataObject1.GetImage()來操作,就是上述問題出處。
先判斷剪切板的檔案,再判斷圖片,避免重復處理同一個內容。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/274621.html
標籤:VB.NET
