VB.Net中,将剪切板上的图片粘贴到RichTextBox,当GetImage无效时,怎样将剪切板上未知格式的图像(或位图等等)转换为Bmp格式
望諸公 2021-04-10 03:17:30 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. 怎样获得该图形文件原来的文件名
在这里,恳请不愿意回答的朋友不要作一些似是而非的答案,不愿意回答就不要作答!以免愿意回答的其他朋友出于避免抢题而回避了,谢谢各位!