我们提供了,复制,移动,缩放,变换,镜向等编辑实体函数,详细如下图:
下面js代码,把实体从一个点,移到另一个点.
// 让用户在图上选择一个对象。 var ent = mxOcx.GetEntity("选择实体"); if (ent == null) return; // 移动实体 // 移动基点 var ptBase = mxOcx.NewPoint(); ptBase.x = 0; ptBase.y = 0; // 移动到点. var ptMoveTo = mxOcx.NewPoint(); ptMoveTo.x = 100; ptMoveTo.y = 100; ent.Move(ptBase, ptMoveTo);
调用TransformBy函数,可以构建一个坐标变换矩阵,然后对实体进行变换。
下面js代码,选对实体进行缩放,然后再移动:
// 让用户在图上选择一个对象。 var ent = mxOcx.GetEntity("选择实体"); if (ent == null) return; // 创建一个移动矩阵 var movdMat = mxOcx.NewComObject("IMxDrawMatrix3d"); // 移动向量。,100,100相当于向右,向上移动100. var offset = mxOcx.NewComObject("IMxDrawVector3d"); offset.x = 100; offset.y = 100; // 设置移动矩阵. movdMat.Translation(offset); // 创建一个缩放矩阵. var scale = mxOcx.NewComObject("IMxDrawMatrix3d"); // 设置缩放基点是0,0. var scaleBasePoint = mxOcx.NewPoint(); scaleBasePoint.x = 0; scaleBasePoint.y = 0; // 设置缩放比例为 2. scale.Scaling(2, scaleBasePoint); // 把两矩阵相乘.PostMultBy是右乘。 // movdMat = movdMat * scale; // 控件的矩阵坐标变换是从表达的右往左变换原则. // 所以下面这句的意思,先进行缩放,然后再进行移动变换。 movdMat.PostMultBy(scale); // 变换实体. ent.TransformBy(movdMat);