教你认识VB的座标系统

黑鱼儿123

黑鱼儿123

2016-02-19 14:21

下面图老师小编跟大家分享教你认识VB的座标系统,一起来学习下过程究竟如何进行吧!喜欢就赶紧收藏起来哦~
这里我们来看一下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便是字串於旋转後的高度啦!->

展开更多 50%)
分享

猜你喜欢

教你认识VB的座标系统

编程语言 网络编程
教你认识VB的座标系统

Javascript获取某一标签的座标并返回其座标对象

Web开发
Javascript获取某一标签的座标并返回其座标对象

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

教你认识肉苁蓉

饮食禁忌
教你认识肉苁蓉

VB的坐标系统综述

编程语言 网络编程
VB的坐标系统综述

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

vb文件系统控件的使用

编程语言 网络编程
vb文件系统控件的使用

关于胎教你认识多少

早教 育儿 育儿知识
关于胎教你认识多少

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

在你的应用程序里实现简单的加密

在你的应用程序里实现简单的加密

ADSL网速带宽测试知识及方法介绍

ADSL网速带宽测试知识及方法介绍
下拉加载更多内容 ↓