回 帖 发 新 帖 刷新版面

主题:请教联想 里面的怎么编辑

vb神童教程第三章第二节——综合示例六
文章来源:赛迪 作者:小雷

 
  在本节,我们要实现两张不同图片在同一个图形框内的切换,同时可以启用与禁用图形框的自动适应功能。 


图一(切换前)


图二(切换后)

一、设计:
1、创建如图一的界面:
显示标签:
Name:LblShow  Caption:现在显示的是第一张图

图形框控件:
Name:PicShow  AutoSize:None

自动适应复选框:
Name:ChkAutoSize

图片切换按钮:
Name:CmdShow  Caption:图片二

2、先在通用区声明如下变量:
Dim X As Integer
Dim IWidth As Integer
Dim IHeight As Integer

其中,X 准备用来做为图片切换的条件,当 X 为 1 ,图片切换按钮可以切换到图片二;当 X 为 2 ,图片切换按钮可以切换到图片一。

IWidth 与 IHeight 准备用来储存图形框的初始宽度与高度,以便在图形框发生大小变化后回复到原样。

3、程序打开时自动载入图片一:
这样,图片切换按钮就应该能够切换到图片二,所以将 1 赋给 X :

Private Sub Form_Load()
PicShow.Picture = LoadPicture("E:\稿件\Ccidnet\vb\image\vb3-2-1-copy.gif")
X = 1
End Sub

4、自动适应功能的实现:
Private Sub ChkStretch_Click()
If ChkStretch.Value = 1 Then
IWidth = PicShow.Width
IHeight = PicShow.Height
PicShow.AutoSize = True
Else
PicShow.AutoSize = False
PicShow.Width = IWidth
PicShow.Height = IHeight
End If
End Sub

上面程序的意思是,如果复选框被选中,那么先将原始图形框的宽度与高度赋给 IWidth、IHeight ,然后再通过激活 PicShow 的 AutoSize 功能达到图形框的自动适应;如果复选框没被选中,那么禁止 PicShow 的 AutoSize 功能,然后将图形框原来的高度(现在的 IHeight)和宽度(现在的 IWidth)赋值给图形框以恢复原样。

5、图片切换:
Private Sub CmdShow_Click()
If X = 1 Then
PicShow.Picture = LoadPicture("E:\稿件\Ccidnet\vb\image\vb3-2-2-copy.gif")
LblShow.Caption = "现在显示的是第二张图"
CmdShow.Caption = "图片一"
X = 2
Else
PicShow.Picture = LoadPicture("E:\稿件\Ccidnet\vb\image\vb3-2-1-copy.gif")
LblShow.Caption = "现在显示的是第一张图"
CmdShow.Caption = "图片二"
X = 1
End If
End Sub

在上面的程序中,先对 X 进行判断,如果 X 为 1 ,那么图形框显示图片二,显示标签改变成“现在显示的是第二张图”字样,作为图形切换的按钮,
Caption 变成“图片一”,然后再让 X 为 2 好进入另外一种情况;当 X 为 2 ,那么图形框显示图片一,显示标签与切换按钮发生相应变化。

[color=FF0000]二、联想:
记得第一次设计这个程序时,并没有引入 X 这个辅助变量,而是通过鼠标点击的动作来进行判断的,即,当原始图形框中显示的是图片一,那么鼠标点击一次,即奇数次,图形框中会切换到图片二;当鼠标点击第二次,即偶数次,图形框可以切换到图片一;以此类推。所以可以通过次数取余,如果余数为 0 ,那么图形框可以切换到图片一;余数为 1 ,图形框可以切换到图片二。 
具体程序大家可以自行思考,此处不再赘述。[/color]





请教联想 里面的怎么编辑

回复列表 (共3个回复)

沙发

肯定需要一个辅助变量,否则你怎么计算鼠标点击次数?

常用的办法是:

x=x+1
if x\2=x/2 then '如果余数为 0
  .....
else  
  .....
end if



其实,你也可以通过判断鼠标点击的左右键来决定显示哪一张图片,这样就不需要辅助变量了

板凳

我不会弄。
要不你把你说的哪个方法也写出来嘛

谢谢

3 楼

Private Sub PicShow_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then  '如果是鼠标左键点击
  PicShow.Picture = LoadPicture("E:\稿件\Ccidnet\vb\image\vb3-2-2-copy.gif")
  LblShow.Caption = "现在显示的是第二张图"
Else
  PicShow.Picture = LoadPicture("E:\稿件\Ccidnet\vb\image\vb3-2-1-copy.gif")
  LblShow.Caption = "现在显示的是第一张图"
End If
End Sub


不但不需要辅助变量,连CmdShow按纽也不需要

我来回复

您尚未登录,请登录后再回复。点此登录或注册