VB长度宽度高度单位,width,scaleWidth,Height,scaleHeight,scale img width height

如何理解VB窗体中的scale类属性及width height属性之间的关系
VB中的SCALEHIEGT,SCALEWIDTH,与窗体中的WIDTH,HEIGHT的区别及关系是许多VB初学者难以理解的。本人在学习DELPHI的过程中也曾经对这类似的概论搞不清楚,但通过这次对VB中这些类似概念的学习后,可以说是已掌握了这种概念及原理了。现在回头看DELPHI的相关知识点有豁然开朗的感觉,VB的确是可视化编程入门的最佳语言。

问题的提出
在VB中默认的度量单位是缇,这是一种跟屏幕分辨率无关的一种度量单位,主要是用在打印机上的,大概是1缇=1/20磅。其它的一些单位请查看MSDN。使用缇就会给我们带来一些麻烦,因为我们都习惯于使用像素来度量窗体及控件的大小,并使用显示器当前的分辨率作参考物来确定窗体的适当大小,当我们想动态地改变窗体的大小的时候我们该如何确定正确的数值呢,想动态地移动窗体中的控件,该如何确定控件的位置呢?同时,在VB的窗体中同时存在着这样的一些属性:scaleWidth,scaleHeight,scaleLeft,scaleTop,scaleMode,Width,Height,他们之间是怎样的关系,是如何影响窗体中控件的大小的呢?通过下面的解说,我们就能解决上面所提到的问题。

其实在VB中的窗体内部(除去窗体边框及标标题栏的区域)有一个类似于画布的东西,它始终是占满整个窗体区域的,他有一个坐标系统,默认的是原点就是窗体的左上角,坐标是0,0然后往左伸延的就是X轴,往下就是Y轴了,但是这个坐标的单位默认就是缇,当然我们是可以修改成其它类型的单位,要修改度量单位的话就要设定窗体的scaleMode属性。如:设为像素scaleMode=3。这个坐标系统是用来确定要在什么位置上通过PRINT等方法来作图的,以及确定在这个容器中的什么位置上放置控件,以及跟窗体宽和高的比例情况。
VB使用的度量单位共有8种。系统默认的度量单位是缇(Twip,1厘米=576缇),用户可以根据需要,选择系统提供的其它标准度量单位。度量单位的设置是由窗体或图片框的ScaleMode属性定义的。其属性值及对应的度量单位及用法见表9-1-1。
表9-1-1 VB的度量单位
属性值 字符常量 说明
0VbUser用户自定义类型。若用户使用ScaleWidth、ScaleHeight、ScaleTop、ScaleLeft设置坐标系统,VB会自动设置ScaleMode为0
1 VbTwips 默认值,以Twip为单位。1英寸=144 Twip
2 VbPoints 以磅(Point)为单位,1英寸=72磅
3 VbPixels 像素(Pixel),即显示器分辨率的最小单位。
4 VbCharacters 字符, 1个字符宽度=120 Twip,1个字符高度=240 Twip
5 VbInches 英寸
6 VbMillimeters 毫米
7 VbCentimeters 厘米
说明:
⑴ 上表中,除了0和3外,其余规格均可用于打印机,所使用的单位长度就是打印机上输出的长度。
⑵ ScaleMode属性可以在设计阶段在属性窗口设置,也可以通过程序代码设置。例如:
Form1.ScaleMode=5‘窗体坐标系统以英寸为单位
Picture1.ScaleMode=7‘图片框坐标系统以厘米为单位

预备知识
其实在VB中的窗体内部(除去窗体边框及标标题栏的区域)有一个类似于画布的东西,它始终是占满整个窗体区域的,他有一个坐标系统,默认的是原点就是窗体的左上角,坐标是0,0然后往左伸延的就是X轴,往下就是Y轴了,但是这个坐标的单位默认就是缇,当然我们是可以修改成其它类型的单位,要修改度量单位的话就要设定窗体的scaleMode属性。如:设为像素scaleMode=3。这个坐标系统是用来确定要在什么位置上通过PRINT等方法来作图的,以及确定在这个容器中的什么位置上放置控件,以及跟窗体宽和高的比例情况。

scale类属性的作用
清楚了窗体有这样一个画布及它的坐标后,我们再来看看有关这个坐标系统的属性。这些scale类型属性主要是用来设定画布坐标系统的数值跟窗体的高宽数值比例情况的。具体是怎样的关系及怎样影响在下面有论说。scaleLeft,scaleTop这两个属性是用来设定这个坐标系统的原点位置的,系统默认的scaleLeft,scaleTop是0,也就是说原点在窗体的左上角了,坐标系统只有大于0的那一块坐标,这样的好处是可以很直观地使用这个坐标系统因为参照点是0且是从窗体的左上角开始的。如果把这两个值设定为大于0的话,画布的坐标就有正负区域了,这样就更像我们数学上的坐标系统了。scaleMode用于设定坐标轴的度量单位。


width,Height的作用
这两个属性是用于设定窗体的宽和高,他们的单位始终是缇,会直接影响到画布的大小及坐标的比例情况,要动态设置窗体的大小也只能通过这两个属性来设定。


这些属性的关系
默认情况下,窗体的宽和高是跟窗体上的画布的宽和高是一样大小的,且画布的坐标原点就是窗体的左上角。也就是说,画布的宽和窗体的宽是1:1的关系,也就是说画布的1缇宽度相当于窗体的1缇宽度。那么当我们在窗体上用print.circle(500,500),200来画一个圆的时候,原点就是在距窗体顶部500个缇,左边500个缇,半径是200个缇。现在我们尝试把窗体上的scaleHeight,scaleWidth修改为原来的1/2,现在也是用同样的方法来画一个圆,对比这一下现在的圆跟修改前的圆,可以发现当前圆的半径比原来的扩大了一倍,而且圆心的位置也改变了。同样的参数为什么会有不一要结果呢?这就是scaleHeightscaleWidth起的作用,假如窗体原本的width是1000缇,scaleWidth也是1000缇,也就是说他们是1:1的关系,我们用print.circle(500,500),200在画布上画出来的圆所用的尺寸单位是1:1的,明确一点说就是在画布宽上所画的一缇就是窗体宽度的一缇,但修改了scaleWidth后,比如说是原来值的一半,情况就不一样了,画布跟窗体的比例就变成是1:2了,在画布看来,要用原来数值的一半来表示窗体的宽,那么只能是1个缇来表示窗体width的两个缇了,这样的话如果还是用原来参数来使用print方法来作圆的话,出来的圆就是原来的两倍了。情况就有点像要在一张白张上把整个中国地图画出来一样,张上的一毫米就相当于实际十万八千公里了。这就是scale属性跟窗体width,height之间或关系了。


缇跟像素的关系
我们可以通过VB的系统对像screen的twipPerPixersX及twipPerPixersX属性来返回当前分辨率下每一像素所占缇,默认情况下应该是15。但这个值是不是固定的呢?答案是不的,屏幕也是一个画布,同时也像窗体一样有高和宽,要返回15的前提条件是scaleWidth跟width是1:1,scaleHeight跟height也是1:1。
VB长度宽度高度单位,width,scaleWidth,Height,scaleHeight,scale img width height
总结
窗体上有一个画布,它的坐标系统默认是跟窗体一样的,但可以通过scale类属性可以去修改。通过这些scale类属性我们可以开发出一种具有图形放大缩小功能的程序,只要把作图的方法中参数保持不变,动态改变scale属性就可以达到目的,这种关系是成反比的,也就是说参数不变,scale减小的话图形就放大。这类程序的例子就像是股票分析软件中的成交量图。
另:DELPHI也有类似的画布机制。原理是基本上一致的。

  

爱华网本文地址 » http://www.aihuau.com/a/25101016/307342.html

更多阅读

如何制作两寸蓝底证件照 如何制作两寸蓝底照片

如何制作两寸蓝底证件照——简介无论是职场上、校园里,办事办证都需要用到证件照片,今天就跟大家来一起学习下如何用Photoshop 软件来DIY两寸蓝底证件照。如何制作两寸蓝底证件照——工具/原料上半身照片Photoshop软件如何制作两寸蓝

鼻孔大怎么办 怎样使鼻孔变小的妙招

鼻孔大怎么办——简介 鼻子处于人整个面部的中部,在某种程度上鼻部外形决定了面部的整体美感,鼻子的宽度、长度、高度是面部平衡之所在。挺拔、俏丽的鼻梁,能给予人既雅致又独具魅力的印象。具有美学标准的鼻型,鼻背是珠圆玉润的,鼻尖要

英制长度单位转换成公制 公制英制转换器

1959年国务院发布《关于统一计量制度的命令》,确定米制为我国的基本计量制度以来,全国推广米制、改革市制、限制英制和废除旧杂制的工作。1984年颁布的《国务院关于在我国统一实行法定计量单位的命令》中命令我国的计量单位一律采用《

姚明“儿子”长什么样?有多高?!图解 长度宽度深度高度图解

   北京时间昨天晚上有二则关于“多高”的新闻,非常引人注目。   一个是迪拜的世界第一高楼到底有多高?!此前估计的是818米,后来在众人的眼球中和灿烂的烟花中,数字停到了828米,比预计高度“长高十米”!        还有一个“预测

声明:《VB长度宽度高度单位,width,scaleWidth,Height,scaleHeight,scale img width height》为网友雾时之森分享!如侵犯到您的合法权益请联系我们删除