我需要呼叫一個dll,dll里有一個函式,在呼叫后,回傳的是一個位元組集,準確說法是位元組陣列,而我需要將這段位元組集加載到圖片框顯示出來,本來,可以直接寫到檔案,然后通過路徑,用loadpicture加載,但我不想寫成檔案,求其他方法
uj5u.com熱心網友回復:
寫成檔案不會死人的。uj5u.com熱心網友回復:
PropertyBag物件并不止于讀取保存圖片,它就象一個大麻袋,可以藏任何東西,并放到你想放的地方,具體藏什么 ,是由你決定的。你可以將任何物件保存為Byte(),并在需要的時候讀出來如將 ADO 的 RecordSet 物件保存起來,并在需要的時候讀取等等……
[將picture保存到陣列]
'假設Form 上已經存在Picture1的控制元件,并已經設定好圖片
Dim PBag As New PropertyBag
Dim B() As Byte
PBag.WriteProperty "Picture", Picture1.Picture
'讀取Picture1.Picture 圖片并寫到 Pbag 容器中
B = PBag.Contents '獲取容器Byte 到 B() 陣列中
'這時 B 就時我們想要獲得的Byte陣列
'讀取 Byte() 陣列內容到 Picture
PBag.Contents = B '指定 PBag容器的內容
'讀取容器中的圖片
Set Picture1.Picture = PBag.ReadProperty("Picture")
簡單的幾句代碼就可以完成從圖片到Byte() ,從Byte()到圖片的轉換。而且其保存和讀取的格式都是使用了原始格式,即:如果你的圖片框讀入的是Jpg圖片格式,則保存的Byte()陣列也是該Jpg格式的陣列,而非普通位圖的陣列,所以你也不用擔心轉換后的陣列很沒有壓縮,很大。
uj5u.com熱心網友回復:
Public Sub ShowBmp(byt() As Byte)
Dim bmi As BITMAPINFO
'設定BMP資訊頭
With bmi.bmiHeader
.biBitCount = 24
.biCompression = 0
.biPlanes = 1
.biSize = Len(bmi.bmiHeader) '40
.biWidth = fW
.biHeight = fH
.biSizeImage = .biHeight * (((.biWidth * .biBitCount + 31) And &HFFFFFFE0) \ 8)
End With
Clear
With Picture1
hasImage = True
SetDIBits .hdc, .Image.handle, 0, bmi.bmiHeader.biHeight, byt(LBound(byt)), bmi, 0
.Refresh
End With
End Sub
這是我用的一段代碼,作用就是將一個圖片的資料(位元組陣列),在PictureBox里面顯示出這張圖片來。
uj5u.com熱心網友回復:
+10086
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/93895.html
標籤:資源
