| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 557 人关注过本帖
标题:一个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
快速回复:一个VB超级菜鸟学习问题之2
数据加载中...
 
   



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

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