首页 | 新闻资讯 | 软件应用 | 图形图像 | 网络应用 | 硬件学堂 | 程序开发 | 安全中心 | 素材下载 | 作者专区 | 学院论坛
精选专题 | 精美壁纸 | 专家答疑 | Flash剧场 | Photoshop | 名词解释 | 梦幻桌面 | PS高手进阶 | QQ区 | 图书 | 黑客教材
Flash教程| 卡通制作 | AutoCAD | 3DMax实例 | PS视频教程| 网页制作 | CorelDRAW| Firework | 滤镜与实例 | 全部视频教程
当前位置:eNet硅谷动力 > 学院频道 > VB

教你认识VB的座标系统
2004-03-11 01:33 来源:eNet论坛
    
加入收藏  设为首页

这里我们来看一下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便是字串於旋转後的高度啦!
关键字: VB  座标 
您对这篇文章的看法是:    喜欢 反感 支持 反对 加油 鄙视 学习 打击 佩服 漂亮 路过 发表评论
视频教程】 【专题汇总】 【不懂就问我关闭窗口

360安全卫士 V5.1.1正式版发布!
Photoshop给模特美腿加上质感肤色
了解差距 国外27款创意名片设计赏
认清五种被忽视的黑客攻击方式
QQ音乐播放器2009正式版今天发布!
相关文章
 本栏目最新文章
·编写电话拨号程序时一点小技巧
·VB开发应用软件之写在动手之前
·用VB实现“木马”式隐形运行程序
·怎样实现在VB窗体中有Html页面
·用VB编程实现图像的熠熠生辉效果
 精彩回放
·3DSMAX打造书本翻开效果
·共享上网技巧应用四则
·陪酒女浸泡在酒里的青春
·美女的性感靓丽婚纱设计
·妖冶身姿 死或生3壁纸
·剿灭Win XP下的29个烦恼
·黑客必备 NET命令大全
·用PS制作精致绝伦的红酒
 精彩推荐
 今日软件下载
杀毒软件免费随便用
瑞星全功能安全软件2009 基于“云安全”策略和“智能主动防御”技术开发.
www.rising.com.cn
 往日推荐
·推荐“美图秀秀”就能赚Q币
·五大搜索引擎横向评测
·防御计算机病毒十大步骤

论坛精华
·史上最强最多 photo 
·photoshop完美扣图教 
·网络学院flash教程目 
·Photoshop下载大全 
·PhotoShop实例精选电 
·打包笔刷 附图的~~ 
热点推荐
绘制逼真金蛋
浪漫婚纱照片
Flash视频编程
Ulead GIF教程
热点关注
·Flash CS4 制作经典小游戏
·C语言程序设计视频教程
·PHP+MYSQL开发视频教程
·Flash CS4从入门到精通教程
·服装设计与效果图绘制教程
·21视频之Fireworks8网页制作
·Vray高级实例应用视频教程
·CorelDRAW14入门到高级教程
·Vray高级实例应用视频教程
全国计算机等级考试二级(VB语言)
往日推荐
网站重构设计
鹏哥C#教程
服装设计教程
PS唯美风景
焦点关注