您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> VB >> 真题 >> 正文    
  教你认识VB的座标系统 【注册男护士专用博客】          

教你认识VB的座标系统

www.nanhushi.com     佚名   不详 

  这里我们来看一下ScaleLeft/Top/Height/Width ScaleX ScaleY TextHeight TextWidth的一些特性与关连。

  所谓的ScaleLeft ScaleTop ScaleTop ScaleWidth指的是Window中的Client Area即可以画图、放元件的区域,像Title区就不在Client Area的范围。如果我们设定ScaleMode成不为0的数值,如设定ScaleMode = 3 (VBPixels)那麽就代表这区域的度量是以Pixels为单位,而ScaleTop =ScaleLeft = 0,即原点在左上角。VB提供了一个很好用的座标系统转换,即ScaleMode, ScaleLeft ScaleTop ScaleTop 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,若X Y轴单位不同时也不一定是5(如果字大小不变的话)。那我会使用Pixels来做二者的转换,Pixels一个点便是一个点,所以X,Y轴的单位是相同的,当然,使用Twips也可以,只是如果中间有用上API,人家大多以Pixels为单位。
  With Form1
  OldScaleLeft = .ScaleLeft
  OldScaleTop = .ScaleTop
  OldScaleWidth = .ScaleWidth
  OldScaleHeight = .ScaleHeight
  OldScaleMode = .ScaleMode
  .ScaleMode = vbPixels
  txtLen = .TextWidth(mystring) 'myString是待旋转的字串
  if OldScaleMode <> vbUser then
  .ScaleMode = oldScaleMode
  else
  .ScaleLeft = OldScaleLeft
  .ScaleTop = OldScaleTop
  .ScaleWidth = OldScaleWidth
  .ScaleHeight = OldScaleHeight
  End If
  txtHeight = .ScaleY(txtLen,vbPixels, vbUser)
  End With
  如此txtHeight便是字串於旋转後的高度啦!

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    教你认识VB的座标系统
    专 题 栏 目

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)                            【进男护士社区逛逛】
    姓 名:
    * 游客填写  ·注册用户 ·忘记密码
    主 页:

    评 分:
    1分 2分 3分 4分 5分
    评论内容:
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。