VB中建立用户自定义图形坐标系统的方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB中建立用户自定义图形坐标系统的方法
VB中,窗体和图片框内可以用图形方法画图。在画图时,出于各种需要,会用到各种坐标系统。VB提供了用户定义的坐标系统以满足各种需要。由于VB使用手册等各种参考资料对这方面的叙述很简单,因此部分设计人员在定义此类坐标系统时遇到了困难。本文介绍了建立用户自定义图形坐标系统的方法。
1.容器的工作区
VB中,窗体、图片框和框架是常用的容器。屏幕也是一种容器,它是窗体的容器。这些容器都有各自的坐标系统。屏幕和框架的坐标系统只有一种,就是坐标原点在屏幕左上角,X轴向右,Y轴向下,刻度单位是缇(Twip,1缇=1/1440英寸)。窗体及图片框与其它容器相比,特点是在它们的工作区内可以用图形方法画图。窗体工作区就是从窗体中去掉边框及标题区后的其余部分。图片框工作区就是从图片框中去掉边框后的其余部分。通常,边框的厚度和标题区的高度与它们的BorderStyle属性(边框风格属性)及Appearance(外观属性)有关。现以一种35.56厘米(14英寸)显示器分辨率640象素×480象素为例,列出几种BorderStyle属性值时非工作区部分的尺寸(Appearance属性为缺省值1):
①图片框
BorderStyle属性为0时无边框;
BorderStyle属性为1(缺省值)时左边框加右边框及上边框加下边框都是4象素(Pixel)。
②窗体
BorderStyle属性为0时无边框无标题区;
BorderStyle属性为1或为3时左边框加右边框是6象素,上边框加下边框加标题区是25象素;
BorderStyle属性为2(缺省值)时左边框加右边框是8象素,上边框加下边框加标题区是27象素。
象素与缇的换算关系是与显示设备有关的。在VB中求屏幕对象的TwipsPerPixelX和TwipsPerPixelY属性返回值就可得到象素与缇的换算关系。在上述显示设备的情况下,1象素等于15缇。由于象素是屏幕显示各种坐标系统的基本单位,所以与坐标有关的属性,其返回值是VB通过象素来换算的。2.与坐标系统有关的属性
1. Top属性和Left属性:对象左上角在其容器坐标系中的纵和横坐标,单位取决于其容器坐标系纵横坐标轴的刻度单位。
2. Height属性(高度)和Width(宽度)属性:对象的高度和宽度,单位取决于其容器坐标系纵横坐标轴的刻度单位。
3. ScaleWidth属性(定标宽度)和ScaleHeight属性(定标高度)用来表示对象坐标系横纵坐标轴的刻度单位是对象工作区宽高度的多少分之一及方向,正负号表示横纵坐标轴方向,正值表示正方向向右(下),负值表示正方向向左(上)。
4.ScaleTop属性和Scaleleft属性:对象工作区的左上角在本身坐标系中的纵横坐标。
5.ScaleMode属性(定标方式属性):窗体和图片框的ScaleMode属性值决定了窗体和图片框所用的坐标系统。有8种值:0. 用户定义的坐标系统;1. 缺省
的坐标系统,即坐标原点在工作区左上角,X轴向右,Y轴向下,刻度单位是缇;2~7. 坐标系统也都是坐标原点在工作区左上角,X轴向右,Y轴向下,但刻度单位分别是磅(Point)、象素(Pixel)、字符、英寸、毫米和厘米。
ScaleMode属性值为1~7时,坐标系统是标准坐标系统。用户设置Width 和Height这二个属性值之后,如把ScaleMode属性设置为1~7中的一个值后,VB会自动设置ScaleLeft为0、ScaleTop为0;对ScaleWidth和ScaleHeight 这2个属性值,VB会将它们自动圆整为象素数的相应值(用户不能再设置这四个属性值)。例如,图片框的ScaleMode属性设置为1,Width为2887.5~2902.5缇及Height为2167.5~2182.5缇,图片框的Scalewidth返回值是2835缇(折合为189象素),图片框的ScaleHeight返回值是2155缇(折合为141象素)。3.建立用户自定义坐标系统
只要用户设置了ScaleWidth、ScaleHeight、Scaletop或ScaleLeft中的任一个,则ScaleMode属性自动设置为0,而这时的坐标系统原点和坐标轴刻度单位都发生了改变,但这种改变往往需要通过计算才能看出。所以在一般情况下,不要去随便更改ScaleWidth、ScaleHeight、ScaleTop或ScaleLeft中的任一个。只有在需要建立用户自定义坐标系统时才去改变它们。现通过举例来说明如何计算有关的属性值。
例:设窗体的ScaleMode为1,图片框的Width=2894,Heigth=2179,图片框的左右边框之和及上下边框之和都为60缇(4象素),在图片框上建立用户自定义坐标系统,坐标原点在图片框工作区左上角,其横坐标轴向右,纵坐标轴向下,刻度单位为3缇,计算如下:
图片框工作区宽度为2894-60=2834缇,应取2835缇,折合为2835/3=945个新刻度单位(1象素等于5个新刻度单位);图片框工作区高度为2179-60=2119缇,应取2115缇,折合为2115/3=705个新刻度单位。所以
ScaleWidth=945, ScaleHeight=705
ScaleLeft=0, ScaleTop=0
在这样的坐标系中,图片框的左上角坐标为(0,0),左下角(0,700),右下角(940,700),右上角(940,0)。建立用户定义坐标系统,使用Scale方法:Picturel.Width=2894: Picture1.Height=2179
Picture1.Scale(0,0)-(945,705)
这里,(945,705)是工作区右下角(940,740)右下方邻近象素的相应坐标。
4.结束语
本文对VB图形坐标系的几个见解是:
1. 像素是屏幕显示各种坐标系统的基本单位,与坐标有关的属性,其返回值是VB通过象素来换算的;
2. 窗体和图片框工作区尺寸的确定方法;
3. Scale方法中的第2个坐标(X2,Y2)是工作区右下角右下方邻近象素在本身坐标系中的相应坐标。
从而得出了定义用户坐标系的正确方法。
5.参考实例
试着画出函数 y=x2 的图像。