Vb.net Excel copy Picture And Paste to PictureBox
2013/06/13 11:48
瀏覽549
迴響0
推薦2
引用0
網路上找到的 相關資料都有點缺陷!!
自己研究後 發現的一些問題做紀錄
Excel Copy的圖檔
讀Clipboard 會有以下 的資料
Clipboard.GetDataObject.GetFormats
(0): "Office Drawing Shape Format"
(1): "EnhancedMetafile"
(2): "MetaFilePict"
(3): "PNG+Office Art"
(4): "JFIF+Office Art"
(5): "GIF+Office Art"
(6): "PNG"
(7): "JFIF"
(8): "GIF"
(9): "ActiveClipBoard"
圖檔部分就 3,4,5,6,7,8
3,6 是PNG
4,7 是JPG
5,8 是GIF 很醜
用ms = obj.GetData("PNG+Office Art", True)取出 再轉到PictureBox
會發現 每個格是貼出來的都是Excel上看到的樣子和大小(可能是變形的),不是原圖!!
研究了一下..6,7,8都是 Excel 處理過的圖!!
而 3,4,5 則是 小圖 + 大圖 (不過PictureBox 只會出現處理過的圖)
對3,4做了些研究...4讀起來圖 都怪怪的!!
3 則可以取到原圖
最後的做法是
取 3的值 再從 5的Byte數 +148 Byte 作為起始值 後取到的就是 Png的原圖了哦!!跟貼到小畫家的一樣
ms = obj.GetData("PNG+Office Art", True)
ms1 = obj.GetData("PNG", True)
ImageMs = New System.IO.MemoryStream(ms.ToArray, ms1.Length + 148, ms.Length - ms1.Length - 148)
PictureBox1.Image = Image.FromStream(ImageMs)
ms.Dispose()
ms1.Dispose()


