VB交互式CAD系统图形的缩放部分设计(源代码+答辩PPT) 第4页

VB交互式CAD系统图形的缩放部分设计(源代码+答辩PPT) 第4页
弧的起点和终点相对于中心点的连线与X轴正向所成的角度,用弧度表示。范围在-2*pi(π)到2*pi(π)之间,缺省时为0。返回点pBegin 到点pEnd的连线与X轴正向的夹角,用弧度表示。
`如果重点坐标大于、等于起点坐标。并且终点坐标大于、等于起点坐标
If pEnd.x>=pBegin.x And pEnd.y>=pBegin.y Then
GetAngle=sita
`如果终点横坐标小于、等于起点横坐标,并且终点纵坐标大于、等于起点纵坐标
ElseIf pEnd.x<= pBegin.x And pEnd.y>=pBegin.y Then
GetAngle=PI-sita
`如果终点横坐标小于、等于起点横坐标,并且终点纵坐标小于、等于起点纵坐标
ElseIf pEnd.x<= pBegin.x And pEnd.y<=pBegin.y Then
GetAngle=PI+sita
`如果终点横坐标大于、等于起点横坐标,并且终点纵坐标小于、等于起点纵坐标
ElseIf pEnd.x〉= pBegin.x And pEnd.y<=pBegin.y Then
GetAngle=2*PI-sita
……………
……………
……………
End if
计算圆弧的起始点:Angle1=GetAngle(m_pCenter,m_pBegin)
计算圆弧终止角:Angle2=GetAngle(m_pCenter,m_pEnd)
(三)缩放代码设计    
图3-6 “缩放”菜单
在绘图和审图过程中,常常有对图形进行缩小或放大的要求。实现各种方式的缩小和放大功能通过调节绘图环境的ScaleLeft, ScalaTop, ScaleWidth 和ScaleHeight属性或者利用Scale方法可以实现图形画面的缩小、放大。缩放菜单项中各项的标题为“ ZoomOut” ,“ZoomIn”,“ LocalZoomOu”和“ Extent”。
(1) 全局缩放
通过放大或缩小Scale 方法的参数来实现。原理:就是将视口矩形4个角点的坐标放大一定的倍数,视口内的图形将以相应的倍数缩小。相反,将视口矩形4个角点的坐标缩小一定倍数,视口内的图形以相应的倍数放大。全局图形缩小或放大都由改变坐标系统来实现。
 `全局缩小图形
Private Sub ZoomIn_Click()
 SLeft=sLeft*1.2           `以120%的比例放大
sRight=sRight*1.2
sTopic=sTopic*.2
sBottom=sBottom*1.2
`修改坐标系统
Call Coordinate
End Sub
`全局放大图形
Private Sub ZoomOut_Click()
   sLeft=sLeft*0.8           `以80%的比例缩小
   sRight=sRight*0.8
   sTopic=sTopic*0.8
   sBottom=sBottom*0.8   `改变坐标系统
Call Coordinate
End Sub
上面两个过程中都要调用Coordinate过程,该过程利用坐标参数Scale方法修改坐标系统,并通过控制视口范围来实现图形的缩放操作。
Coordinate 过程的代码:
Public Sub Coordinate()
`利用Scale方法修改坐标系统
DrawMain.picDraw.Scale(sLeft,sTopic)-(sRight,sBottom)
`更新绘图环境
DrawMain.picDraw.Refresh
End Sub
   图3-7原始图形   
图3-8全局放大和全局缩小结果
(2) 局部放大
当希望更清楚地了解图形的某个细节部位时,可以采用局部放大技术,把包含该部位的一个矩形范围放大到整个绘图环境。
如图3-9所示,要把E点和G点确定的矩形放大到整个绘图环境,需要把E点与屏幕左上角A点对齐,然后按照一定比例放大图形,使矩形内的图形正好全部显示在视口内。放大的比例包括X方向的比例和Y方向的比例,若不改变图元的形状,并且矩形EFGH内的所有图元能在矩形ABCD中显示,放大比例只能取X方向比例和Y方向比例中的小者。
                  图3-9局部放大的原理图示
实现局部放大先选取用户所要放大的部分,那么这个部分就用矩形来选取,用Line 方法绘矩形;而且无论放大或缩小都要计算新坐标系与逻辑坐标系的缩放比例因子;然后重新设置视口范围之后,就是局部放大的效果了;创建CviewLocalZoomOut 类,并添加一些相关的代码。然后像处理前面各绘图类一样,在窗体模块中添加相对应的鼠标事件处理代码。 在该类中主要实现选取局部放大的功能。选取行为在移动鼠标的过程中产生,放大行为在鼠标左键第二次击下的那一时刻才产生。就像图3-10和3-11所示

上一页  [1] [2] [3] [4] [5] 下一页

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有