vb怎么把文件夹中图片显示在控件上 ,例如开始时显示a.jpg,点下一张显示b.jpg最好有添加控件的步骤等 15
4个回答
展开全部
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
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
展开全部
打开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
已经过调试,应该没有问题。
'下面是程序共有变量和数组:
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
已经过调试,应该没有问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
打开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
然后点击执行,即可看到效果了。
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
然后点击执行,即可看到效果了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
控件因为不能使用 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 后和最后添加两个半角括号即可。
注意!设置为 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 后和最后添加两个半角括号即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询