我们提供了,复制,移动,缩放,变换,镜向等编辑实体函数,详细如下图:

下面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);
12-13 21:30
查看更多