教你认识VB的座标系统

2016-02-19 14:21 2 1 收藏

下面图老师小编跟大家分享教你认识VB的座标系统,一起来学习下过程究竟如何进行吧!喜欢就赶紧收藏起来哦~

【 tulaoshi.com - 编程语言 】

这里我们来看一下ScaleLeft/Top/Height/WidthScaleXScaleYTextHeightTextWidth
  的一些特性与关连。
  所谓的ScaleLeftScaleTopScaleTopScaleWidth指的是Window中的ClientArea即可以
  画图、放元件的区域,像Title区就不在ClientArea的范围。如果我们设定ScaleMode
  成不为0的数值,如设定ScaleMode=3(VBPixels)那麽就代表这区域的度量是以Pixels
  为单位,而ScaleTop=ScaleLeft=0,即原点在左上角。
  VB提供了一个很好用的座标系统转换,即ScaleMode,ScaleLeftScaleTopScaleTop
  ScaleWidth。我个人不喜欢VB内定的ScaleMode=VbTwips,我爱ScaleMode=VBPixels
  原因是Window系统的度量单位是使用Pixels而不是Twips。
  如果我们想在一个画面上画上座标,那麽如何才能不管Window的大小,而只管我们所
  关注的座标呢?假设我们想做一个座标,原点在Form的左下角(0,0)而右上角座标是
  (100,100),那我们只要对Form如此设
  ScaleTop=100
  ScaleWidth=100
  ScaleLeft=0
  ScaleHeight=-100,那就成了,这时候,如果我们去查一下Form的MouseDown的
  X,Y值,会发现它的值已变成落在0-100之间了。(此时的ScaleMode=自动变Vbuser)
  更有趣的是用来计算字串高、宽的TextHeight/TextWidth也变成以座标0-100的方式来
  表现了。例如说,
  .CurrentX=10
  .CurrentY=10
  Form1.Print"HaHa",这时会见到於Form左下方会出现HaHa,它的位置便是於座标
  (10,10)之处,所以了,如果Form变大,Form1.Print"HaHa"所显示之位置也会自动更动
  不像其他的ScaleMode(如vbPixel),会在固定的绝对单位处显示"HaHa"。然而,有时候
  我们会想要以绝对单位来做一些事,例如:我们希望在左边算来第三个Pixels处来显示
  东西,的确,数学好的人可以自己转换,而像我数学不好的人,可以用ScaleX/ScaleY
  来做,像方才的例子,左边算来第三点(Pixels)相对应於新的座标的宽度便是
  
  Form1.ScaleX(3,vbPixels,vbUser)。
  
  
  再来一个有趣的问题,如果有人见过我的一篇文章,用API来任意角度旋转字型,那
  篇文章中字型旋转之後印在Form上,如果我们转90度,而且於(50,50)处印字,会发
  现它是从(50,50)处往萤幕上方写出字,如果我们想在座标(50,50)处当作字串的结束
  之地,那该如何呢,我会计算出该字串的长度(例如:长度20),而後在(50,70)处印字
  ,那困难点变成如何得知该字串长度,第一个反应是.TextWidth,不过别忘了,
  TextWidth它随着ScaleMode的更动而变,宽度x1者,如果垂直Print,而便假设其高
  度也是x1是不对的(如:ScaleTop=0,ScaleHeight=10,ScaleLeft=0,ScaleWidth
  =20,而宽度=10的字串,垂直印的高度应是不会是10,若XY轴单位不同时也不一定是5
  (如果字大小不变的话)。
  那我会使用Pixels来做二者的转换,Pixels一个点便是一个点,所以X,Y轴的单位是相同
  的,当然,使用Twips也可以,只是如果中间有用上API,人家大多以Pixels为单位。
  WithForm1
  OldScaleLeft=.ScaleLeft
  OldScaleTop=.ScaleTop
  OldScaleWidth=.ScaleWidth
  OldScaleHeight=.ScaleHeight
  OldScaleMode=.ScaleMode
  .ScaleMode=vbPixels
  txtLen=.TextWidth(mystring)'myString是待旋转的字串
  ifOldScaleModevbUserthen
  .ScaleMode=oldScaleMode
  else
  .ScaleLeft=OldScaleLeft
  .ScaleTop=OldScaleTop
  .ScaleWidth=OldScaleWidth
  .ScaleHeight=OldScaleHeight
  EndIf
  txtHeight=.ScaleY(txtLen,vbPixels,vbUser)
  EndWith
  如此txtHeight便是字串於旋转後的高度啦!->

来源:https://www.tulaoshi.com/n/20160219/1606823.html

延伸阅读
一般进入系统都要登录(如进入Windows NT),进行身份检验,以保证软件的合法使用和维护,便于明确责任。我们自己开发的系统也必须保证系统使用者是合法用户,登录时要进行身份验证。 ---- 系统登录时一般有三次机会,超过则视为非法用户,不让使用系统。本程序是用VB5.0实现的,后台数据库是Access 97。 其主要源程序代码如下:Priva...
标签: 疾病预防
乳腺肿瘤怎么治 教你正确认识乳腺肿瘤 乳腺肿瘤是一种发生在乳房的部位的疾病,常见于女性,有时候男性和婴儿也会发生这种症状,但是几率非常小。乳腺肿瘤的出现和恶化与许多原因有关,特别是有很大心理负担的人,往往会导致疾病恶化。那么今天图老师小编就向大家介绍乳腺肿瘤的相关知识,赶紧来看看吧! 目录 ...
标签: 疾病预防
不孕不育怎么办 教你正确认识不孕不育 不孕不育其实是两种病,分为女性不孕症和男性不育症。引起不孕不育的原因有很多,特别是一些经常有很大压力的白领们。那么你知道不孕不育的发病原因到底是哪些吗?今天图老师小编就向大家介绍不孕不育的相关知识,赶紧来看看吧! 目录 1、不孕不育的概述 2、不孕不育的病因...
标签: 电脑入门
如果你使用Windows XP操作系统,那么请注意磁盘碎片整理的问题。 1.为什么要需要整理碎片 磁盘上的文件布局会强烈地影响I/O性能,严重碎片化的或散布在磁盘中的文件和目录会损害性能,虽然Windows XP会自动重定位某些文件来改善性能,但通常情况下,这并非属于系统必须的常规,而且通常情况下也仅包含磁盘上很小部分的文件。 从这方面来考...

经验教程

269

收藏

58
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部