PICTUREBOX.让他载入一幅图片

yttlovezxx 2005-11-09 11:36:54
比如说我单击一次PICTUREBOX.让他载入一幅图片.而再单击一次又再入另外一幅图片.该怎么办那?第一次用CLICK事件.第二次怎么办那?帮忙!
...全文
261 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
yttlovezxx 2005-11-16
  • 打赏
  • 举报
回复
我只有两张图片啊!
Summer006 2005-11-10
  • 打赏
  • 举报
回复
晕!! 唉。。。无语也
yttlovezxx 2005-11-10
  • 打赏
  • 举报
回复
哈哈.已经解决了.在VBgoog论坛上的.
以下是代码拿出来与大家分享!
Private Sub picoutput_Click(Index As Integer)

If iPhotoIndex(Index) = 0 Then
'加载 off 图片
picoutput(Index).Picture = LoadPicture("C:\David 's bag\Item\P_Off.bmp")
iPhotoIndex(Index) = 1
Else
' 加载 on 图片
picoutput(Index).Picture = LoadPicture("C:\David 's bag\Item\P_On.bmp")
iPhotoIndex(Index) = 0
End If



End Sub


northwolves 2005-11-10
  • 打赏
  • 举报
回复
昨天有人问的在一个IMAGE上切换显示某文件夹下所有图片文件:

'add an imagebox to form1,Then add the following codes:

Dim i As Integer, mypics As New Collection


Sub loadpics(ByVal mydir As String)
Set mypics = Nothing
mydir = mydir & IIf(Right(mydir, 1) = "\", "", "\")
Dim temp As String, ext As String
temp = Dir(mydir)
Do While Not temp = ""
ext = Mid(temp, InStr(temp, ".") + 1)
If ext = "bmp" Or ext = "gif" Or ext = "jpg" Or ext = "jpeg" Then mypics.Add mydir & temp
temp = Dir
Loop
End Sub

Private Sub Form_Load()
i = 0
loadpics "C:\My Documents\My Pictures"
Image1.Move 0, 0, Me.Width, Me.Height
Image1.Stretch = True
End Sub



Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then i = IIf(i = mypics.Count, 1, i + 1)
If Button = 2 Then i = IIf(i = 1, mypics.Count, i - 1)
Image1.Picture = LoadPicture(mypics(i))
Me.Caption = mypics(i)
End Sub
zou19820704 2005-11-09
  • 打赏
  • 举报
回复
Dim i As Integer
Private Sub Picture1_Click()
Select Case i
Case 0
Me.Picture1.Picture = LoadPicture("0.bmp")
Case 1
Me.Picture1.Picture = LoadPicture("1.bmp")
Case 2
Me.Picture1.Picture = LoadPicture("2.bmp")
Case 3
Me.Picture1.Picture = LoadPicture("3.bmp")
End Select
i = i + 1
If i = 4 Then i = 0

End Sub
yttlovezxx 2005-11-09
  • 打赏
  • 举报
回复
Private Sub picoutput_Click(Index As Integer)
Dim i As Integer
m_ClickCount = 1
For i = 0 To 15
Select Case m_ClickCount
Case 1
Set picoutput(i).Picture = LoadPicture("C:\David 's bag\Item\P_On.bmp")
m_ClickCount = m_ClickCount + 1
Case 2
Set picoutput(i).Picture = LoadPicture("C:\David 's bag\Item\P_Off.bmp")
m_ClickCount = m_ClickCount + 1

Case Else
Set picoutput(i).Picture = LoadPicture("C:\David 's bag\Item\P_On.bmp")
m_ClickCount = 1
End Select
If m_ClickCount >= 2 Then m_ClickCount = 1

Next i


End Sub

这我的代码!不行啊!
Summer006 2005-11-09
  • 打赏
  • 举报
回复
哦事件里面还必须有m_ClickCount=m_ClickCount+1
Summer006 2005-11-09
  • 打赏
  • 举报
回复
用个全局变量控制贝。 比如m_ClickCount
click事件就:
select case m_ClickCount
case 0
set picture1.picture=loadpicture("0.bmp")
case 1
set picture1.picture=loadpicture("1.bmp")
case 2
set picture1.picture=loadpicture("2.bmp")
...
case else
end select
如果要轮回,再加个 if m_ClickCount>=10 then m_ClickCount=0
熊孩子开学喽 2005-11-09
  • 打赏
  • 举报
回复
如果楼主有N个PICTURE对象,那就可以通过设置多个全局变量来进行,或者干脆设置成全局数组:

Option Explicit
Dim FileIndex(N-1) as long '这个N由具体情况决定,可别照抄哦。
...
...
Sub picture1_click(index as integer)
FileIndex(index) = (Fileindex(index) +1) mod 16
'因为图像文件编号从0到15共16个,所以要MOD 16 。如果不是16个,楼主自己改数字
picuture1(index).picture = loadpicture(app.path & "\" & FileIndex(index) & ".bmp")
End Sub
熊孩子开学喽 2005-11-09
  • 打赏
  • 举报
回复
给楼主一个比较简单的方案,

如果有16个图片,先依次命名为:0.bmp,1.bmp,2,bmp,3.bmp...15.bmp然后存放在程序所在的文件夹下。

程序中设置一个全局变量,用来保存当前打开的图片编号:

Option exlpicit
Dim FileIndex as long
...
...
Sub picture1_click()
FileIndex = (Fileindex +1) mod 16
picuture1.picture = loadpicture(app.path & "\" & FileIndex & ".bmp")
End Sub
这样,当你按一次PICTURE就会自动载入下一幅图片,并且可以实现自动循环。
cyy219 2005-11-09
  • 打赏
  • 举报
回复
学习!
yttlovezxx 2005-11-09
  • 打赏
  • 举报
回复
现在还没解决呢!5555555555
yttlovezxx 2005-11-09
  • 打赏
  • 举报
回复
我这个程序中的I是picturebox控件数组的index.picturebox总共有16个.所以index是0-15.这几个图片是用来控制开关量的输出端口的电平输出情况的.我是想任意点哪个picturebox(i)就会把换图片.然后再点击就会再换.就是这样的!
faysky2 2005-11-09
  • 打赏
  • 举报
回复
你的代码不行是因为For循环在影响,你的循环具体起什么作用呢?把循环去掉就可以了:

Private Sub picoutput_Click(Index As Integer)
Dim i As Integer
m_ClickCount = 1
Select Case m_ClickCount
Case 1
Set picoutput(i).Picture = LoadPicture("C:\David 's bag\Item\P_On.bmp")
m_ClickCount = m_ClickCount + 1
Case 2
Set picoutput(i).Picture = LoadPicture("C:\David 's bag\Item\P_Off.bmp")
m_ClickCount = m_ClickCount + 1

Case Else
Set picoutput(i).Picture = LoadPicture("C:\David 's bag\Item\P_On.bmp")
m_ClickCount = 1
End Select
If m_ClickCount >= 2 Then m_ClickCount = 1


End Sub

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧