VB中建立用户自定义图形坐标系统的方法
VB中建立用户自定义图形坐标系统的方法

VB中建立用户自定义图形坐标系统的方法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缇。
第8章VB图形设计

VB程序设计教程
沈美莉 马银晓 陈孟建 编著
10
第一节 坐标系统
3. 显示速度 显示速度是指显示图像或文字时的速度。由于显示分辨率和显示器的扫
描频率有关,显示分辨率高时,一个完整屏幕的像素点就增多了,所有像 素都要显示一遍,速度就要慢下来,这就需要提高扫描频率。 4. 颜色和灰度 颜色和灰度是衡量显示系统性能的又一重要参数。早期的显示卡MDA配单 色的显示器只能显示字符,仅有一般亮度和高亮度两种灰度,彩色显示系 统最多也只有16种颜色。而目前的颜色显示系统VGA,可达256种颜色甚至 更多。 5. 图形显示能力 图形显示能力是指屏幕上的每一个像素点可以设置成不同值的能力。早 期的单色显示系统MDA是字符型的,不支持图形显示,它的控制比较简单。 而随后出现的显示系统均能支持图形显示。
VB程序设计教程
沈美莉 马银晓 陈孟建 编著
9
第一节 坐标系统
三、图像分辨率
Visual Basic绘图中的点是以显示器像素为标准的,设置一个点 的颜色是设置窗体对应着的显示器的一个像素的颜色。
1. 显示器简介 显示器是计算机最主要的外部设备之一。显示系统由显示器和适
配卡(显示卡)组成,两者必须配对。 2. 显示分辨率 显示分辨率是指屏幕上有多少个基本像素点。显示系统的分辨率
功能:在<对象名>控件上,画出一条从( x1 , y1 )到( x2 , y2 )的线 段。其中[( x1 , y1 )]和[, <Color> ]为可选项。参数x和y既可以是整 数,又可以是小数。
运行该程序后,显示结果如下图所示。
VB第十章 绘图

第10章 绘图程序
本章要点
坐标系统 绘图属性 绘图方法 应用实例
第10章 绘图程序 10.1 坐标系统
10.1 坐标系统
绘图语句所绘制的图形,通常是通过容器控件 (窗体、图片框)输出的,而每个容器控件都有一个 坐标系统,坐标系是在容器控件中绘图必备的条件。 一个坐标系,包含坐标度量单位、坐标原点、坐 标轴的长度与方向等要素。 由坐标的原点、长度和方向三个要素确定绘制的 图形在容器中的位置。
格式: [对象名.] Circle [ [Step] (X,Y),半径[,颜色] [,起始角][,终止角][,长短轴比率]]]
可控制画圆还是椭圆 默认值为1,画圆。 功能:在由[对象名 指定的容器内,在坐标系中以 取值为.] [-2π , 2π]
可控制画圆弧和扇形
(X,Y)为圆心画圆或椭圆或圆弧或扇形。
演示 程序
第10章 绘图程序 10.1 坐标系统
方法二:
Private Sub Form_Click()
格式:[对象.]Scale[(xLeft,yTop)-(xRight,yBottom)]
演示 程序
Form1.Scale (-14, 14)-(14, -14) Form1.CurrentX = -14 Form1.CurrentY = 14 Print "(-14,14)" Form1.CurrentX = 11 Form1.CurrentY = -13 Print "(14,-14)" Form1.CurrentX = 0 Form1.CurrentY = 0 Print "(0,0)" Form1.Line (-14, 0)-(11, 0), vbRed Print "X轴正方向" Form1.Line (0, -14)-(0, 14), vbRed Print "Y轴正方向"
VB中建立用户自定义图形坐标系统的方法

VB中建立用户自定义图形坐标系统的方法
王晋棠;朱昊
【期刊名称】《智能计算机与应用》
【年(卷),期】1999(000)005
【摘要】@@ VB中,窗体和图片框内可以用图形方法画图.在画图时,出于各种需要,会用到各种坐标系统.VB提供了用户定义的坐标系统以满足各种需要.由于VB使用手册等各种参考资料对这方面的叙述很简单,因此部分设计人员在定义此类坐标系统时遇到了困难.本文介绍了建立用户自定义图形坐标系统的方法.
【总页数】1页(P21)
【作者】王晋棠;朱昊
【作者单位】无锡轻工大学西山校区CAD教研室;无锡轻工大学西山校区CAD教研室
【正文语种】中文
【中图分类】TP3
【相关文献】
1.PRO/ENGINEER中的用户自定义特征的建立和使用 [J], 王崴
2.在VB中设计用户自定义控件 [J], 陈巍
3.Visual C#.NET实现用户自定义图形编程方法 [J], 朱卫新
4.在UG Ⅱ系统中建立用户自定义刀具库 [J], 吴勤
5.在UG Ⅱ系统中建立用户自定义刀具库 [J], 吴勤
因版权原因,仅展示原文概要,查看原文内容请购买。
VB的坐标系统综述

VB的坐标系统综述由于在visual basic系统中有多种坐标定义,容易使初学者混淆,本文将详细总结vb的坐标系统的一些基本概念,并提供坐标定义的详细方法:visual basic 坐标系统概述:visual basic 的坐标系统是指在屏幕(screen)、窗体(form)、容器(container)上定义的表示图形对象位置的平面二维格线,一般采用数对(x,y)的形式定位。
其中,x 值是沿x 轴点的位置,最左端是缺省位置 0。
y 值是沿 y 轴点的位置,最上端是缺省位置 0。
在visual basic坐标系中,沿坐标轴定义位置的测量单位,统称为刻度,坐标系统的每个轴都有自己的刻度。
坐标轴的方向、起点和刻度都是可变的,在后面的叙述中,将讨论如何改变这些定义。
如何创建坐标系统:创建图形对象的坐标系统,一般有以下几种方法:1、使用系统缺省定义:在系统缺省状态下,visual basic使用twips坐标系,以’缇’为单位(1缇的长度等于1/1440英寸;1/567厘米;1/20磅)。
应当注意的是:这些值指示的是图形对象打印尺寸的大小。
而在计算机屏幕上的物理距离则根据监视器的大小及分辨率的变化而变化。
2、选择系统标准刻度定义:除了缺省的twips坐标系外,用户还可以通过对象的scalemode 属性来设置其它的坐标刻度:(共有8种设置),现将这些设置列表如下:scalemode值表示说明0 user 用户自定义1 twip 缇,系统缺省设置2 point 磅,每英寸约为72磅3 pixel 像素,像素是监视器或打印机分率的最小单位。
每英寸里像素的数目由系统设备的分辨率决定。
4 character 字符,打印时,一个字符高 1/6 英寸,宽1/12 英寸5 inch 英寸,每英寸为2.54厘米6 millimeter 毫米7 centimeter 厘米在上述设置值中,除了0 和3以外,其它所有模式都是打印机所打印的单位长度。
第9章 VB图形操作

9.4 综合应用
简单动画设计
在程序设计中,动画就是有规律地改变对象的形状、尺 寸或位置,形成的动态效果。动画的速度通常使用时钟控件 来控制。
例9.11
分析: 行星运动的椭圆方程为: x=x0+rx*cos(alfa) y=y0+ry*sin(alfa) 其中,
设置一个模拟行星绕太阳运动的程序。
x0、y0为椭圆圆心坐标,
掌握建立图形坐标系统的方法; 掌握Visual Basic的图形控件和图形方法及其应用; 掌握使用绘图方法绘制简单的二维几何图形。
本章重点: VB中坐标系,绘图方法的使用 本章难点: 容器控件的坐标,及用户自定义坐标系
9.1.2 坐标系统
1. VB坐标系统
每个容器都有一个坐标系,构成一个坐标系,需要三个 要素:坐标原点、坐标度量单位、坐标轴的长度与方向。坐 标度量单位由容器对象的ScaleMode属性决定。缺省时为 Twip。每英寸1440个Twip,20个Twip为一磅。
Object 为对象表达式,可以是窗体、图片框和打印机对象。
Size 为数值表达式,其范围从 1 到 32767。该值以像素为 单位表示线宽。缺省值为 1,即一个像素宽。
9.2 绘图属性
2. 设置线型——DrawStyle 属性
窗体或图形框或打印机的DrawStyle属性给出这些对象上 所画线的形状。其设置值及含意见Pg.212图9.5。
Circle Point
Cls
[Object.]Circle [Step](x,y),r[,color[,start,end[,aspect]]] [Object.] Point(x,y)
[Object.]Cls
省略 { 颜色 } 是采用前景色绘点,如果使用背景颜色可 清除某个位置上的点。
Visual

(十二)图形设计12.1 系统标准坐标系在VB中,每具对象定位于存放它的容器内,对象定位都要使用容哭喊听坐标系,对象的Left.Top属性指示了该对象在容器内的位置。
例如:窗体处于屏幕内,屏幕是窗体的容器;在窗体内绘制控件,窗体就是控件的容器在图形框内绘制图形,该图形框就是容器。
对象只能在容器界定的范围内变动。
当移动容器时,容器内的对象也随着一起移动,而且与容器的相对位置保持不变。
每一个容器都有一个坐标系。
构成一个坐标系需要三个要素:坐标原点、坐标度量单位、坐标由长度与方向。
VB提供了系统标准和用户自定义两种方法的坐标系。
1、坐标原点~根据Scaletop和Scaleft两个属性值形成的。
(1):Scaletop:控制器对象左边的坐标。
(2):Scaleleft;控制器对象顶端的坐标所有对象的Scaletop及Scaleleft的属性的默认值均为0,坐标原点在左上角。
2、标度量单位~Scalenlode属性控件。
坐标系的度量单位常用的有8种,详见教材126页的表8-1注意:改变Scalemode属性并不改变器的大小和它在窗体上的位置,只是改变它的度量的单位而已。
3、坐标原点~根据Scaletop和Scaleft两个属性值形成的。
4、坐标轴的长度与方向(1) Scaleteight(2) Scalewidth(3) Height(4) Width无论采用哪种坐标单位,默认的坐标原点为对象的左上角,横向向右为X轴的正向。
纵向向下为Y轴的正向。
12.2 自定义坐标系由于系统默认的坐标系统对于绘制某些曲线图形不太方便,因而用户可以通过修改它们的属性来自行定义坐标系。
Scale方法是建立用户坐标系最方便的方法。
其语法格式为:〔对象〕Scale[(xleft,ytop)-(xright,ybutton)]其中:(1)对象可以是Form、Picturebox或Priinter(打印机)如果省略对象名,则为带有焦点的窗体对象。
VB6.0哈工大教程-第9章

表9-5 形状控件的FillStyle属性
FillStyle属性值 0 1 2 3 4 5 6 7 描述 实心 透明 水平线 垂直线 左上对角线 右下对角线 交叉线 对角交叉线
Shape属性值
0 1 2 3 4 5
[例9-2] 本例显示Shape控件的6种形状,如图6.3所示。
Private Sub Form_Activate() Dim i As Integer Print " 0 1 2 3 4 5" Shape1(0).Shape = 0: Shape1(i).FillStyle = 2 For i = 1 To 5 Load Shape1(i) Shape1(i).Left = Shape1(i - 1).Left + 750 Shape1(i).Shape = i Shape1(i).FillStyle = i + 2 Shape1(i).Visible = True Next i End Sub
2) BorderWidth属性:设置线条的宽度,即线条的粗细。 BorderWidth属性受BorderStyle属性设置的影响,不同BorderStyle 属性线条的BorderWidth计算方式不同,如表9-3所示。
表6.3 BorderStyle属性对BorderWidth属性的影响
BorderStyle属性设置值 0 1~5 对BorderWidth属性的影响 BorderWidth设置被忽略 边界宽度从中心开始计算
9.2.2 Shape(形状)
Shape控件可以用来画矩形、正方形、椭圆、圆、圆角矩形及圆角 正方形。当Shape控件放到窗体时显示为一个矩形,通过Shape属 性可确定所需要的几何形状。 • 使用形状控件的操作步骤: (1)单击工具箱中的Shape控件按钮。 (2)在窗体上画出形状。 (3)设置属性,定制形状的外观。 (4)调整设置好形状。可单击形状使其成为可编辑状态,通过鼠 标拖动改变其大小和位置,再用属性窗口设置属性,使其符合要 求。
- 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=705ScaleLeft=0, ScaleTop=0在这样的坐标系中,图片框的左上角坐标为(0,0),左下角(0,700),右下角(940,700),右上角(940,0)。
建立用户定义坐标系统,使用Scale方法:Picturel.Width=2894: Picture1.Height=2179Picture1.Scale(0,0)-(945,705)这里,(945,705)是工作区右下角(940,740)右下方邻近象素的相应坐标。
4.结束语本文对VB图形坐标系的几个见解是:1. 像素是屏幕显示各种坐标系统的基本单位,与坐标有关的属性,其返回值是VB通过象素来换算的;2. 窗体和图片框工作区尺寸的确定方法;3. Scale方法中的第2个坐标(X2,Y2)是工作区右下角右下方邻近象素在本身坐标系中的相应坐标。
从而得出了定义用户坐标系的正确方法。
5.参考实例试着画出函数 y=x2 的图像。
界面设计:新建一个工程,添加一个命令按钮Command1,一个图片框Picture1。
代码设计如下::Private Sub Command1_Click()Dim x, y As Single '定义变量Picture1.Scale (-25, 25)-(25, -25) '定义坐标系Picture1.Line (-20, 0)-(20, 0), RGB(0, 0, 255) '画横坐标轴Picture1.Line (0, -20)-(0, 20), RGB(0, 0, 255) '画纵坐标轴'描点画函数图像For x = -5 To 5 Step 0.0001y = x ^ 2Picture1.Pset (x, y), RGB(255, 0, 0)Next xEnd Sub这里我们来看一下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 ScaleTopScaleWidth。
我个人不喜欢VB内定的ScaleMode = VbTwips,我爱ScaleMode=VBPixels原因是Window系统的度量单位是使用Pixels而不是Twips。
如果我们想在一个画面上画上座标,那麽如何才能不管Window的大小,而只管我们所关注的座标呢?假设我们想做一个座标,原点在Form的左下角(0,0)而右上角座标是(100,100),那我们只要对Form如此设ScaleTop = 100ScaleWidth = 100ScaleLeft = 0ScaleHeight = -100,那就成了,这时候,如果我们去查一下Form的MouseDown 的X, Y值,会发现它的值已变成落在0-100之间了。
(此时的ScaleMode = 自动变Vbuser)更有趣的是用来计算字串高、宽的TextHeight/TextWidth也变成以座标0-100的方式来表现了。
例如说,.CurrentX = 10.CurrentY = 10Form1.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(如果字大小不变的话)。