pepe1204 2014-12-10 02:29 采纳率: 33.3%
浏览 1630
已结题

mxgraph看下自定义 线样式代码 加急!

这段代码怎么改坐标,使线不重叠
graph.stylesheet.getDefaultEdgeStyle()[mxConstants.STYLE_EDGE] =
mxEdgeStyle.MyStyle = function(state, source, target, points, result)
{
var view = state.view;
var pt = (points != null && points.length > 0) ? points[0] : null;
var pts = state.absolutePoints;
var p0 = pts[0];
var pe = pts[pts.length-1];

        if (pt != null)
        {
            pt = view.transformControlPoint(state, pt);
        }

        if (p0 != null)
        {
            source = new mxCellState();
            source.x = p0.x;
            source.y = p0.y;
        }

        if (pe != null)
        {
            target = new mxCellState();
            target.x = pe.x;
            target.y = pe.y;
        }

        if (source != null && target != null)
        {
            var l = Math.max(source.x, target.x);
            var r = Math.min(source.x + source.width,
                             target.x + target.width);

            var x = (pt != null) ? pt.x : r + (l - r) / 2;

            var y1 = view.getRoutingCenterY(source);
            var y2 = view.getRoutingCenterY(target);

            if (pt != null)
            {
                if (pt.y >= source.y && pt.y <= source.y + source.height)
                {
                    y1 = pt.y;
                }

                if (pt.y >= target.y && pt.y <= target.y + target.height)
                {
                    y2 = pt.y;
                }
            }

            if (!mxUtils.contains(target, x, y1) &&
                !mxUtils.contains(source, x, y1))
            {
                result.push(new mxPoint(x,  y1));
            }

            if (!mxUtils.contains(target, x, y2) &&
                !mxUtils.contains(source, x, y2))
            {
                result.push(new mxPoint(x, y2));
            }

            if (result.length == 1)
            {
                if (pt != null)
                {
                    if (!mxUtils.contains(target, x, pt.y) &&
                        !mxUtils.contains(source, x, pt.y))
                    {
                        result.push(new mxPoint(x, pt.y));
                    }
                }
                else
                {   
                    var t = Math.max(source.y, target.y);
                    var b = Math.min(source.y + source.height,
                             target.y + target.height);

                    result.push(new mxPoint(x, t + (b - t) / 2));
                }
            }
        }
    };
  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥30 这是哪个作者做的宝宝起名网站
    • ¥60 版本过低apk如何修改可以兼容新的安卓系统
    • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
    • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
    • ¥50 有数据,怎么用matlab求全要素生产率
    • ¥15 TI的insta-spin例程
    • ¥15 完成下列问题完成下列问题
    • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
    • ¥15 YoloV5 第三方库的版本对照问题
    • ¥15 请完成下列相关问题!