标题:一个VB超级菜鸟学习问题之2
只看楼主
king197810
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-6-8
 问题点数:0 回复次数:2 
一个VB超级菜鸟学习问题之2

今天教程已经学到第十四课了,呵呵,坚持下来不容易!
又遇到不明白的地方了,再次来请大家传道授业解惑。言归正传:

这是一个滚动条跟踪鼠标实例,建立了一个picture控件和两个滚动条,当鼠标在picture中移动里,下边的滚动条和右边的滚动条自动跟踪并随着鼠标一起运动定位。
代码如下:

Private Sub Form_Load()
HScroll1.Max = 100
HScroll1.Min = 0
VScroll1.Max = 100
VScroll1.Min = 0

End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Y > Picture1.Top And Y < Picture1.Top + Height Then
VScroll1.Value = (Y - Picture1.Top) / (Picture1.Height) * 100
End If
If X > Picture1.Left And X < Picture1.Left + Width Then
HScroll1.Value = (X - Picture1.Left) / (Picture1.Width) * 100
End If


End Sub
通过以上的代码执行是对的

但我不明白的是,Y的取值范围应该是从picture1的最低点到picture1的最高点!(即个人认为应该代码应该是if y> picture1.最低点 and y<picture1.最低点 + height then才对呀)
Y > Picture1.Top(???那不就已经超过picture1的最高点了) And Y < Picture1.Top + Height Then(这里的范围我也认为不在picture1内呀)。

劳烦大家给我解释一下可以嘛?
谢谢

搜索更多相关主题的帖子: 超级 学习 
2007-06-25 14:14
zhulei1978
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
得分:0 

VB中坐标的原点在左上角,越往右x越大,越往下y越大
你用debug输出一下就知道了

Private Sub Form_Click()
Debug.Print Picture1.Top
Debug.Print (Picture1.Top + Picture1.Height)

End Sub

Private Sub Form_Load()
HScroll1.Max = 100
HScroll1.Min = 0
VScroll1.Max = 100
VScroll1.Min = 0


End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Y > Picture1.Top And Y < Picture1.Top + Height Then
VScroll1.Value = (Y - Picture1.Top) / (Picture1.Height) * 100
End If
If X > Picture1.Left And X < Picture1.Left + Width Then
HScroll1.Value = (X - Picture1.Left) / (Picture1.Width) * 100
End If


End Sub


[此贴子已经被作者于2007-6-25 15:55:24编辑过]


其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2007-06-25 15:01
king197810
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-6-8
得分:0 
以下是引用zhulei1978在2007-6-25 15:01:17的发言:

VB中坐标的原点在左上角,越往右x越大,越往下y越大
你用debug输出一下就知道了

Private Sub Form_Click()
Debug.Print Picture1.Top
Debug.Print (Picture1.Top + Picture1.Height)

End Sub

Private Sub Form_Load()
HScroll1.Max = 100
HScroll1.Min = 0
VScroll1.Max = 100
VScroll1.Min = 0


End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Y > Picture1.Top And Y < Picture1.Top + Height Then
VScroll1.Value = (Y - Picture1.Top) / (Picture1.Height) * 100
End If
If X > Picture1.Left And X < Picture1.Left + Width Then
HScroll1.Value = (X - Picture1.Left) / (Picture1.Width) * 100
End If


End Sub

哦,原来VB中的原点是在左上角呀!视频教程上老师没有讲。。。这下明白了。谢谢zhulei1978,您也是78年的呀?我们同岁勒。再次谢谢您的解答。
2007-06-25 20:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-150140-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.988613 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved