vb怎么把文件夹中图片显示在控件上 ,例如开始时显示a.jpg,点下一张显示b.jpg最好有添加控件的步骤等

2024-12-30 10:16:04
推荐回答(4个)
回答1:

Option Explicit
Dim list2() As String, B可播放文件数 As Integer '可以播放的文件
Dim list() As String '存放所有的文件名
Dim total As Long '文件总个数
Dim now As Long '用来记录当前读取的文件的排序
Private Sub Command1_Click()
now = now + 1
If now > B可播放文件数 Then now = 1
Picture1.Picture = LoadPicture(list2(now))
End Sub

Private Sub Command2_Click()
now = now - 1
If now < 1 Then now = B可播放文件数
Picture1.Picture = LoadPicture(list2(now))
End Sub

Private Sub Form_Load()
now = 1
total = 0
getAll "E:\My Documents\My Pictures" '指定图形文件夹
'输出文件的个数
Call F存入可播放文件名
If B可播放文件数 > 0 Then
Picture1.Picture = LoadPicture(list2(now))
Else
MsgBox "没有图像文件"
End If
Command1.Caption = "下一张"
Command2.Caption = "上一张"
End Sub
'遍历指定目录下的文件 并将所有的文件名放入数组list
Function getAll(rootF)
Dim fso As Object, folder As Object, subfolder As Object, file As Object
Set fso = CreateObject("scripting.filesystemobject") '创建FSO对象
Set folder = fso.getfolder(rootF) '得到文件夹对象
For Each subfolder In folder.subfolders '遍历子文件夹
Call getAll(subfolder) '递归,查找该文件夹的子文件夹
Next
For Each file In folder.Files '遍历根文件夹下的文件
Debug.Print folder
Debug.Print file '输出文件名
total = total + 1
ReDim Preserve list(total) As String
list(total) = file
Next
Set fso = Nothing
Set folder = Nothing
Set fso = Nothing
End Function
Function F存入可播放文件名()
Dim i As Integer
B可播放文件数 = 0
For i = 1 To total
If Right(list(i), 3) = "jpg" Or Right(list(i), 3) = "bmp" Then
B可播放文件数 = B可播放文件数 + 1
ReDim Preserve list2(B可播放文件数)
list2(B可播放文件数) = list(i)
End If
Next
End Function

回答2:

打开VB,出现的新建工程标准EXE,点击左侧控件工具箱中的控件,在窗体上放置一个Image控件,调整Image控件大小,然后双击窗体,在出现的代码编辑窗口中输入:

'下面是程序共有变量和数组:
Dim K As Integer '存储显示图片的变量
Dim TPLJ As String 'TPLJ存储图片所在路径
Dim TPM(1 To 20) As String 'TPM(1 TO 20)存储图片名,可以根据你的需要修改

'下面是启动代码:
Private Sub Form_Load()
Image1.Stretch = True '图片大小适应图形控件大小,目的是可以显示大图片,但有些图片可能变形
TPLJ = "J:\照片\照片\" '中存储图片路径,你可以修改
For I = 1 To 20
TPM(I) = "照片 0" & CStr(I) & ".jpg" '在数组图片名为照片 01.jpg,照片 02.jpg,照片 03.jpg......照片 020.jpg,你自己可以根据需要修改
Next I
K = 1
Image1.Picture = LoadPicture(TPLJ & TPM(K)) '启动显示第一个图片
End Sub

'下面是Image1控件的点击事件代码:
Private Sub Image1_Click() '点击图片显示下一个
K = K + 1
If K > 20 Then K = 1 '如果图片变量大于20,变量设置为1
Image1.Picture = LoadPicture(TPLJ & TPM(K)) '点击图片显示下一个
End Sub

已经过调试,应该没有问题。

回答3:

打开VB,出现的新建工程对话框上选择标准EXE,点击左侧控件工具箱中的控件,然后在窗体上画上一个PictureBox,一个CommandBox,CommandBox的Caption属性为“下一个”,然后双击窗体,在出现的代码编辑窗口中输入:
Private Sub Form_Load ()
Picture1.Picture = LoadPicture("C:\a.jpg")
End Sub
然后关闭代码窗口,在窗体上双击CommandBox,在出现的代码窗口中输入:
Private Sub Command1_Click ()
picture1.Picture=LoadPicture("C:\b.jpg")
End Sub
然后点击执行,即可看到效果了。

回答4:

控件因为不能使用 hDC 和 hWnd 操作,占用内存少,重绘快。里面有一个 Stretch 属性,设置为 True 就是图片将就 Image,False 就是 Image 将就图片(估计也是用 PaintPicture 函数画的……参数不同而已)。
注意!设置为 False,Image 自动调整完毕后再进行大小修改是可以的,不会限定大小!
如果没有特殊需求(如 GDI+),就用 Image 好一点,甚至是 Form(支持 PictureBox 的所有方法)。
我估计 PaintPicture 的原型是 StretchDIBits。

下面讲解我从不知道有 PaintPicture 这个函数到掌握其用法的过程,供大家参考:
1、见到 PaintPicture 函数,考虑是否为 VB 的标准库函数;
2、直接调用,说明是;
3、用对象浏览器查找,发现所有具有 hDC 的控件都支持 PaintPicture,在根据 jcButton 的 DrawGradientEx 函数(by Charles PV)推测其原型。
4、由于 PaintPicture 的第一个参数类型为 StdPicture,结合 LoadPicture 的返回值及自动转换(IPictureDisp->StdPicture)想到用法。以下为简略型。

PaintPicture LoadPicture("", ...一堆参数,根据名称想作用), 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, ...又是一堆参数

这个没有设置返回值接收,想要也很简单,用个变量接着,再向 PaintPicture 后和最后添加两个半角括号即可。