1、主要用到函数说明:_DMxDrawX::DrawLine
绘制一个直线。详细说明如下:
参数 | 说明 |
---|
DOUBLE dX1 | 直线的开始点x坐标 |
DOUBLE dY1 | 直线的开始点y坐标 |
DOUBLE dX2 | 直线的结束点x坐标 |
DOUBLE dY2 | 直线的结束点y坐标 |
2、IMxDrawCustomEntity::Draw
把实体绘制到图上。一般用于动态拖放时,在拖放结束时,绘制到图上。
3、js中实现代码说明:
(1)动态拖放时的绘制事件:
1 2 3 4 5 6 7 8 9 10 | function DynWorldDrawMatrix1( pCustomEntity, pWorldDraw, curPt) { //与用户交互在图面上提取一个点 var vBasePt = pCustomEntity.GetPoint( "BasePoint" ); //绘制一个直线 //参数一直线的开始点x坐标,参数二直线的开始点y坐标,参数三直线的结束点x坐标,参数四直线的结束点y坐标 pWorldDraw.DrawLine (vBasePt.x, vBasePt.y, vBasePt.x, curPt.y); pWorldDraw.DrawLine (vBasePt.x, curPt.y, curPt.x, curPt.y); pWorldDraw.DrawLine (curPt.x, curPt.y, curPt.x, vBasePt.y); pWorldDraw.DrawLine (curPt.x, vBasePt.y, vBasePt.x, vBasePt.y); } |
(2)动态绘制矩形框:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | function DrawPathToPolyline() { // 创建一个与用户交互取点的对象。 var point1 = mxOcx.GetPoint( false ,0,0, "\n 点取开始点:" ); if (point1 == null ) { return ; } var getSecondPt = mxOcx.NewComObject( "IMxDrawUiPrPoint" ); getSecondPt.message = "第二点" ; getSecondPt.basePoint = point1; //不开启皮筋效果 getSecondPt.setUseBasePt( false ); //调用 var spDrawData = getSecondPt.InitUserDraw( "TestDynDrawMatrix1" ); // 设置动态绘制参数. spDrawData.SetPoint( "BasePoint" , point1); // 开始取第二个点。 if (getSecondPt.go() != 1) return ; var ret = spDrawData.Draw(); } |
4、效果展示:
通过点击绘制矩形框按钮,触发DrawPathToPolyline()事件,则用户可以在CAD控件视区绘制所需的矩形框。如下图所示:
![dydrawjx.png](https://i-blog.csdnimg.cn/blog_migrate/71ec2c62ea08a2bf644c8914143a13ee.png)