【scalewidth】VB坐标问题请问VB中Form的scaleHeight和height以及scalewidth和...
答案:2 悬赏:30 手机版
解决时间 2021-02-21 14:55
- 提问者网友:王者佥
- 2021-02-20 14:06
【scalewidth】VB坐标问题请问VB中Form的scaleHeight和height以及scalewidth和...
最佳答案
- 五星知识达人网友:野味小生
- 2021-02-20 15:27
【答案】 Width、Height是窗体的整体宽度和高度,ScaleWidth和ScaleHeight则是窗体中客户区(也就是去掉边框、标题栏、菜单等后可实际利用的区域)的宽度和高度.
ScaleMode选0,表示客户区采用的是用户自定义坐标系统,如果设ScaleWidth=100,就表示窗体客户区的宽度为100单位,而这个单位究竟相当于多少缇(VB的默认单位)呢?我们可以把ScaleMode重新选为默认的1,这时你会发现当Width=4000时,ScaleWidth=3885,也就是说你自定义的100宽度单位=3885缇,现在让Width=5000,这时ScaleWidth=4875,也就是说客户区的宽度增长了4875/3885=1.254826倍,那么你自定义的宽度单位自然也就变为100*1.254826=125.4826咯!高度的情况也类似,由于这时候要考虑窗体标题栏的情况,所以虽然Width和Height是相等的数值,但ScaleWidth和ScaleHeight的数值(按缇为单位算)是不相等的,所以你自定义的100高度单位与100宽度单位也是两种不同的长度单位.具体计算如下:
当Height=4000缇时,ScaleHeight=3495缇,
当Height=5000缇时,ScaleHeight=4485缇,
因此客户区高度增长了 4485/3495=1.283262
也就是自定义的客户区高度为100*1.283262=128.3262
你会发现我计算出的高度和你的128.821有点差别,这是因为你和我的XP系统采用的桌面主题不同,这样标题栏的高度也会有所不同,但误差也不是很大.
不知道你现在看明白了没有?
另外,你怎么会得出“窗体外边框比窗体内部大很多”的说法呢?1000米和1公里,光从数字上来看,1000比1大很多,但你别忘了,它们采用的是不同的单位! 追问: 你的意思是窗体的 Height 和 Width 的单位永远是缇?因为我ScaleMode和ScaleHeight,ScaleWidth时,它们并没有改变。 追答: 窗体的整体样式,包括 Height 、Width 、Left、Top、标题栏、最大化、最小化、关闭按钮等等,这些都是受操作系统控制的,任何软件都不可能随意更改的(除非自己另外建立一套),这也就是不管是VB、VC还是其他设计语言做出来的标准窗体外观都完全一样的原理。而窗体内部的客户区则是可以由软件自由控制的区域,所以VB的SCaleMode和ScaleHeight,ScaleWidth只能影响到窗体内部区域(包括其中的控件),对窗体的整体外观是没有影响的。你还可以这样来理Width和height是对外的,所以要用统一的单位,否则随意更改单位,操作系统或其它软件的窗体不认你怎么办?而ScaleHeight,ScaleWidth则是对内的,自己内部怎么用那就可以随意了,就像在自己房间里用米、寸、英寸、甚至几步、几根手指来丈量家具之间的距离都没人说你的。
ScaleMode选0,表示客户区采用的是用户自定义坐标系统,如果设ScaleWidth=100,就表示窗体客户区的宽度为100单位,而这个单位究竟相当于多少缇(VB的默认单位)呢?我们可以把ScaleMode重新选为默认的1,这时你会发现当Width=4000时,ScaleWidth=3885,也就是说你自定义的100宽度单位=3885缇,现在让Width=5000,这时ScaleWidth=4875,也就是说客户区的宽度增长了4875/3885=1.254826倍,那么你自定义的宽度单位自然也就变为100*1.254826=125.4826咯!高度的情况也类似,由于这时候要考虑窗体标题栏的情况,所以虽然Width和Height是相等的数值,但ScaleWidth和ScaleHeight的数值(按缇为单位算)是不相等的,所以你自定义的100高度单位与100宽度单位也是两种不同的长度单位.具体计算如下:
当Height=4000缇时,ScaleHeight=3495缇,
当Height=5000缇时,ScaleHeight=4485缇,
因此客户区高度增长了 4485/3495=1.283262
也就是自定义的客户区高度为100*1.283262=128.3262
你会发现我计算出的高度和你的128.821有点差别,这是因为你和我的XP系统采用的桌面主题不同,这样标题栏的高度也会有所不同,但误差也不是很大.
不知道你现在看明白了没有?
另外,你怎么会得出“窗体外边框比窗体内部大很多”的说法呢?1000米和1公里,光从数字上来看,1000比1大很多,但你别忘了,它们采用的是不同的单位! 追问: 你的意思是窗体的 Height 和 Width 的单位永远是缇?因为我ScaleMode和ScaleHeight,ScaleWidth时,它们并没有改变。 追答: 窗体的整体样式,包括 Height 、Width 、Left、Top、标题栏、最大化、最小化、关闭按钮等等,这些都是受操作系统控制的,任何软件都不可能随意更改的(除非自己另外建立一套),这也就是不管是VB、VC还是其他设计语言做出来的标准窗体外观都完全一样的原理。而窗体内部的客户区则是可以由软件自由控制的区域,所以VB的SCaleMode和ScaleHeight,ScaleWidth只能影响到窗体内部区域(包括其中的控件),对窗体的整体外观是没有影响的。你还可以这样来理Width和height是对外的,所以要用统一的单位,否则随意更改单位,操作系统或其它软件的窗体不认你怎么办?而ScaleHeight,ScaleWidth则是对内的,自己内部怎么用那就可以随意了,就像在自己房间里用米、寸、英寸、甚至几步、几根手指来丈量家具之间的距离都没人说你的。
全部回答
- 1楼网友:西风乍起
- 2021-02-20 16:37
回答的不错
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯