(二)绘图代码设计 内容来自论文无忧网 www.paper51.com 图3-5 “绘图”菜单 copyright paper51.com
绘图在CAD系统是必不可少的。我只做了直线、多义线、圆、圆弧四个选项。绘图离不开坐标系统。因为在VB中,只有缺省坐标和自定义坐标两个概念。其中,缺省坐标的原点在于窗口的左上角,横坐标向右为正; 纵坐标向下为正。 内容来自论文无忧网 www.paper51.com 交互式CAD系统可以实现用鼠标交互式地输入数据。采用面向对象的编程技术,需要首先创建一个图元系列类和一个命令系列类。定义绘图时的交互过程。定义好类以后,再定义类的属性及调用类的方法就可以进行交互绘图了。交互式鼠标的绘图行为,可以在屏幕上移动鼠标光标,并根据光标处的坐标进行绘图。这样整个绘图过程就简单多了,而且也可以随用户的意愿来决定绘图的大小或长度等。用鼠标事件,单击鼠标左键时,开始绘图:Public Sub LeftButton(X As Single As Single);bolDraw=True 内容来自www.paper51.com 单击鼠标右键时,取消绘图:Public Sub LeftButtonDown(X As Single,Y As Single);bolDraw=False paper51.com (1)直线 http://www.paper51.com 用Line 方法绘制 paper51.com 语法:Object.Line[Step](x1,y1)[Step](x2,y2),[color],[B][F] http://www.paper51.com 其中,object:(可选)对象表达式。如果object省略,具有焦点的窗体作为object。 copyright paper51.com Stept:(可选)是关键字,指定起点坐标,相对于CuttentX和 CurrentY 所提供的的当前图标坐标。 paper51.com x1,y1: (可选)Single,直线的起点坐标。ScaleMode属性决定了使用的度量单位。如果省略,线起始于由CurrentX和CurrentY指定的位置。 内容来自www.paper51.com
(2)多义线 copyright paper51.com 是由多条直线组成,所以与绘制直线是同一个道理。多义线用Line 方法将多义线的各个顶点一次连线。 copyright paper51.com (3)绘制圆形 http://www.paper51.com 使用Circle函数。 copyright paper51.com 语法 :object.Circle[Stept](x,y),radius,[color,start,end,aspect] paper51.com 其中,object:(可选)对象表达式。如果object省略,具有焦点的窗体作为object。 内容来自论文无忧网 www.paper51.com Stept:(可选)是关键字,指定圆的中心,相对于object的CuttentX和 CurrentY 所提供的坐标。 http://www.paper51.com x,y: (必须写)Single 圆的中心坐标。Object的ScaleMode属性决定使用的度量单位。 http://www.paper51.com
radius:(必须选)Single,圆的半径。Object的ScaleMode属性决定使用的度量单位。 copyright paper51.com Start,end:(可选)Single 内容来自论文无忧网 www.paper51.com Aspect: (可选)Single,圆的纵横尺寸比。缺省值为1.0 paper51.com (4)圆弧 内容来自论文无忧网 www.paper51.com
绘圆弧比起绘圆要复杂一点,本系统采用圆心起点和终点绘制圆弧,除了需要知道圆心以外,还要知道圆弧的起点的终点的坐标。 内容来自论文无忧网 www.paper51.com 语法:object.Circle[Stept](x,y),radius,[color,start,end,aspect] paper51.com 用Circle 方法绘圆弧时,需要知道圆弧的起点和终点与圆心连接和X轴正向所成的角度。圆弧的半径可以根据圆心与起点的距离得到。Start和end分别指定弧的起点和终点相对于中心点的连线与X轴正向所成的角度,用弧度表示。范围在-2*pi(π)到2*pi(π)之间,缺省时为0。返回点pBegin 到点pEnd的连线与X轴正向的夹角,用弧度表示。 paper51.com
`如果重点坐标大于、等于起点坐标。并且终点坐标大于、等于起点坐标 copyright paper51.com IfpEnd.x>=pBegin.x And pEnd.y>=pBegin.y Then copyright paper51.com GetAngle=sita copyright paper51.com
`如果终点横坐标小于、等于起点横坐标,并且终点纵坐标大于、等于起点纵坐标 copyright paper51.com ElseIf pEnd.x<= pBegin.xAnd pEnd.y>=pBegin.y Then paper51.com
GetAngle=PI-sita paper51.com
`如果终点横坐标小于、等于起点横坐标,并且终点纵坐标小于、等于起点纵坐标 paper51.com ElseIf pEnd.x<= pBegin.xAnd pEnd.y<=pBegin.y Then http://www.paper51.com GetAngle=PI+sita 内容来自www.paper51.com `如果终点横坐标大于、等于起点横坐标,并且终点纵坐标小于、等于起点纵坐标 copyright paper51.com ElseIf pEnd.x〉= pBegin.x AndpEnd.y<=pBegin.y Then paper51.com
GetAngle=2*PI-sita 内容来自论文无忧网 www.paper51.com
…………… 内容来自www.paper51.com
…………… http://www.paper51.com …………… paper51.com End if copyright paper51.com 计算圆弧的起始点:Angle1=GetAngle(m_pCenter,m_pBegin) http://www.paper51.com 计算圆弧终止角:Angle2=GetAngle(m_pCenter,m_pEnd) 内容来自论文无忧网 www.paper51.com |