下面是在VB中显示网页图片的三种方法,其中第一种方法就是完全适合你的要求的:
第一种方法:如果知道图片的URL,那么可以直接在Picture1中显示:
Private Declare Function OleLoadPicturePath Lib "oleaut32.dll" (ByVal szURLorPath As Long, ByVal punkCaller As Long, ByVal dwReserved As Long, ByVal clrReserved As OLE_COLOR, ByRef riid As TGUID, ByRef ppvRet As IPicture) As Long
Private Type TGUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type
Public Function LoadPicture(ByVal strFileName As String) As Picture
Dim IID As TGUID
With IID
.Data1 = &H7BF80980
.Data2 = &HBF32
.Data3 = &H101A
.Data4(0) = &H8B
.Data4(1) = &HBB
.Data4(2) = &H0
.Data4(3) = &HAA
.Data4(4) = &H0
.Data4(5) = &H30
.Data4(6) = &HC
.Data4(7) = &HAB
End With
On Error GoTo LocalErr
OleLoadPicturePath StrPtr(strFileName), 0&, 0&, 0&, IID, LoadPicture
Exit Function
LocalErr:
Set LoadPicture = VB.LoadPicture(strFileName)
Err.Clear
End Function
Private Sub Command1_Click()
Picture1.Picture = LoadPicture("
http://www.baidu.com/img/bdlogo.gif")
End Sub
第二种方法:如果知道图片的URL,那么可以先把图片下载到本地,再在Picture1中显示:
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Private Sub Command1_Click()
URLDownloadToFile 0&, "
http://www.baidu.com/img/bdlogo.gif", App.Path & "\bdlogo.gif", 0&, 0&
Picture1.Picture = LoadPicture(App.Path & "\bdlogo.gif")
End Sub
第三种方法:如果不知道图片URL,但知道网页的URL,那么可以用WebBrowser控件显示网页,再从中找到需要的图片显示到Picture1中:
Private Sub Command1_Click()
Dim CtrlRange As Object, img As Object
Set CtrlRange = WebBrowser1.Document.body.createControlRange
For Each img In WebBrowser1.Document.images
If InStr(img.src, "bdlogo") Then
CtrlRange.Add img
CtrlRange.execCommand "Copy"
Picture1.Picture = Clipboard.GetData
Exit For
End If
Next
End Sub
Private Sub Form_Load()
WebBrowser1.Navigate "
http://www.baidu.com"
End Sub
以上方法都可以显示百度首页的那个Logo图片。相比而言,第一种方法是最好的,别看它代码最多,但它是完全用代码实现的,没有借助其他控件,也没有产生中间文件,用起来就好像网上的图片就是自己硬盘中的图片一样;第二种方法代码最简单,但它会产生硬盘文件,不过如果你恰巧需要下载文件的(就是说不但要显示,还想利用这个图片做其他操作),那么这个方法就是最佳选择了;第三种方法最复杂,需要用到网页控件,而且要用剪贴板过渡,不过如果你的软件本来就是需要用到网页控件的,或者你想获得同一网页的多张图片,那么这又是不二选择了。
补充说明:用URLDownloadToFile显示图片并不会比WebBrowser1.Navigate慢,可能还会更快一些,因为WebBrowser1也是把图片下载了再显示的,只不过它是把图片下载到IE的缓存区,第二次再运行的时候它就会直接到IE缓存区调用了,这个时候就是WebBrowser1快些。另外,WebBrowser1中的边框和滚动条都是可以去掉的,按照网页的处理方法就行了(网页都可以做到无边框无滚动条,WebBrowser1自然也可以)。
本回答被提问者和网友采纳