我写的一个过程,用来从表中的img字段读出图片,然后按照PictureBox的大小进行等比例缩放,过程的两个参数分别传递一个打开的记录集和表中的图片字段名称。引用ADO2.5以上。Private Sub ReadPic(ByVal rs As ADODB.Recordset, ByVal rsFld As String) Dim pp As IPictureDisp Dim stm As New ADODB.Stream Const FileName As String = "temp.tmp"
If Dir(App.Path & "\" & FileName) <> "" Then Kill (App.Path & "\" & FileName)
Dim pp As IPictureDisp
Dim stm As New ADODB.Stream
Const FileName As String = "temp.tmp"
If Dir(App.Path & "\" & FileName) <> "" Then Kill (App.Path & "\" & FileName)
stm.Type = adTypeBinary
stm.Open
stm.Write rs.Fields(rsFld).GetChunk(rs.Fields(rsFld).ActualSize)
stm.SaveToFile App.Path & "\" & FileName, adSaveCreateNotExist
Set pp = LoadPicture(App.Path & "\" & FileName)
Picture1.Cls
If pp.Width <= pp.Height Then
Picture1.PaintPicture pp, (Picture1.ScaleWidth - pp.Width * Picture1.ScaleHeight / pp.Height) / 2, 0, pp.Width * Picture1.ScaleHeight / pp.Height, Picture1.ScaleHeight
ElseIf pp.Width > pp.Height Then
Picture1.PaintPicture pp, 0, (Picture1.ScaleHeight - pp.Height * Picture1.ScaleWidth / pp.Width) / 2, Picture1.ScaleWidth, pp.Height * Picture1.ScaleWidth / pp.Width
End If
Set pp = Nothing
Kill (App.Path & "\" & FileName)
End Sub