• js画线


    html5中的canvas标签的支持ie9+ 所以考虑兼容性ie下的用vml 下面是简单封装的一个类

    用法  qtx_ht("mydiv", "#74DF00", 10).line("shu_1", "shu_9", "shu_2");

    mydiv 为容器id 

    #74DF0 为线的颜色

    10 为先的起始位置理要链接的元素的中心点的半径

    shu_1-shu_2 为要链接的元素id 这里的参数不限,是按顺序链接

    这里要注意的是 ie浏览器下要加

    <html xmlns:v="urn:schemas-microsoft-com:vml">

    <style>
    v:*
    {
    behavior: url(#default#VML);
    }
    </style>

    /// 下面是页面的html代码

    <html xmlns:v="urn:schemas-microsoft-com:vml">
    <head>
        <title>第一个范例</title>
        <style>
            v:*
            {
                behavior: url(#default#VML);
            }
        </style>
        <script type="text/javascript" src="qtx.js">
        </script>
    </head>
    <body>
        <div id="shu_1" name="shu" style="position: absolute; top: 0px; left: 0px">
            1
        </div>
        <div id="shu_2" name="shu" style="position: absolute; top: 20px; left: 100px">
            2
        </div>
        <div id="shu_3" name="shu" style="position: absolute; top: 40px; left: 70px">
            3
        </div>
        <div id="shu_4" name="shu" style="position: absolute; top: 60px; left: 200px">
            4
        </div>
        <div id="shu_5" name="shu" style="position: absolute; top: 80px; left: 60px">
            5
        </div>
        <div id="shu_6" name="shu" style="position: absolute; top: 100px; left: 120px">
            6
        </div>
        <div id="shu_7" name="shu" style="position: absolute; top: 120px; left: 20px">
            7
        </div>
        <div id="shu_8" name="shu" style="position: absolute; top: 140px; left: 60px">
            8
        </div>
        <div id="shu_9" name="shu" style="position: absolute; top: 160px; left: 30px">
            9
        </div>
        <div id="shu_10" name="shu" style="position: absolute; top: 500px; left: 800px">
            10
        </div>
        <div id="mydiv" style="display: block">
        </div>
    
    </body>
    </html>
    <script type="text/javascript">
        qtx_ht("mydiv", "#74DF00", 10).line("shu_1", "shu_9", "shu_2");
    
    </script>

    下面是

    qtx.js的代码
    ///画线 吹预算法 2013-7-4
    (function (w) {
        function isIE() {//是IE反回真 否则返回假
            if (! +[1, ]) return true;
            else return false;
        }
        function isExist(strObj) {
            if (typeof (eval("document.all." + strObj)) != "undefined") {
                return true;
            }
            else {
                return false;
            }
        }
        //获取绝对坐标
        function getAbsPoint(e) {
            var x = e.offsetLeft, y = e.offsetTop;
            while (e = e.offsetParent) {
                x += e.offsetLeft;
                y += e.offsetTop;
            }
            var pxy = {};
            pxy.x = x; pxy.y = y;
            return pxy;
        }
        function l(lfrom, lto, r, c, d) {
            var of = document.getElementById(lfrom);
            var ot = document.getElementById(lto);
            //获取对象长宽
            var wf = of.offsetWidth;
            var hf = of.offsetHeight; //是否绝对坐标待议
    
            var wt = ot.offsetWidth;
            var ht = ot.offsetHeight;
    
            //获取画线坐标
            var xf = getAbsPoint(of).x + wf / 2;
            var yf = getAbsPoint(of).y + hf / 2;
    
            var xt = getAbsPoint(ot).x + wt / 2;
            var yt = getAbsPoint(ot).y + ht / 2;
            var _w = Math.abs(xt - xf);
            var _h = Math.abs(yt - yf);
            var hd = Math.atan2(_h, _w)
            var _x = r * Math.cos(hd);
            var _y = r * Math.sin(hd);
            //                var _x = 3;
            //                var _y = 3;
            if (isIE()) {
                //alert("start -- ");
                var s = "<v:line StrokeColor="" + c + "" from="" + (xf < xt ? xf + _x : xf - _x) + "," + (yf < yt ? yf + _y : yf - _y) + "" to="" + (xt < xf ? xt + _x : xt - _x) + "," + (yt < yf ? yt + _y : yt - _y) + """ + " style="position:absolute;left:0;top:0;"></v:line>";
                var _myo = document.createElement(s);
    
                // 这个方法,使在特定的位置添加对象,具体使用,请参考其它的资料
    
                d.appendChild(_myo);
            }
            else {
                //创建画布
                var myo = document.createElement("canvas");
                myo.setAttribute("width", Math.abs(xt - xf) + "px");
                myo.setAttribute("height", Math.abs(yt - yf) + "px");
                myo.style.left = xf < xt ? xf : xt;
                myo.style.top = yf < yt ? yf : yt;
                myo.style.position = "absolute";
                //            myo.style.visibility = "visible";
                d.appendChild(myo);
                var cxt = myo.getContext("2d");
                cxt.strokeStyle = c;
                if ((xf - xt) * (yf - yt) > 0) {
                    cxt.moveTo(0 + _x, 0 + _y);
                    cxt.lineTo(Math.abs(xt - xf) - _x, Math.abs(yt - yf) - _y);
                } else {
                    cxt.moveTo(0 + _x, Math.abs(yt - yf) - _y);
                    cxt.lineTo(Math.abs(xt - xf) - _x, 0 + _y);
                }
                cxt.stroke();
            }
    
        }
        var h5 = function (d, c, r) {//参数为容器ID
            return new h5.divline(d, c, r);
        };
    
        h5.divline = function (d, c, r) {//参数为容器ID
            this.o;
            this.iso = false;
            this.lcolor = "#FF0000"; //默认颜色
            this.lr = 0
            if (d != null) {
                if (isExist(d)) {
                    this.o = document.getElementById(d);
                    this.iso = true;
                    if (c != null) this.lcolor = c;
                    if (r != null) this.lr = r; ;
                }
            }
        };
        h5.divline.prototype.line = function () {
            if (this.iso == true) {
                var numargs = arguments.length;
                if (numargs >= 2) {
                    for (var i = 0; i < numargs - 1; i++) {
                        l(arguments[i], arguments[i + 1], this.lr, this.lcolor, this.o);
                    }
    
                }
            }
        }
        w.qtx_ht = h5;
    })(window);
     
  • 相关阅读:
    ActionForm补充
    ActionForward
    struts模式匹配
    ActionMapping
    struts1.x的国际化
    DispatchAction
    ActionForm作为类型转换
    struts自定义异常
    hibernate核心接口
    Visual C# 2008+SQL Server 2005 数据库与网络开发 9.5 小结
  • 原文地址:https://www.cnblogs.com/blowfish/p/3171994.html
Copyright © 2020-2023  润新知