zoukankan      html  css  js  c++  java
  • Raphael绘制箭头arrow

    <span style="font-size:14px;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>绘制箭头测试</title>
    <script src="7_5/jquery.min.js" ></script>
    <script src="7_5/jquery-ui.min.js" ></script>
    <script src="7_5/raphael.js" ></script>
    <script>
    var paper;
        $(function()
        {
            paper = Raphael("paper",500,500);
            var path = paper.path("M 50 60 80 130");
            var path_arrow = paper.path(drawArrow(path.id));//生成的每一块图形都拥有唯一标示的id
            //另外一个API自带的线的arrow-end属性在多数情况下试用
            //效果等同于生成path_arrow 示例: path.attr({'arrow-end':'classic-wide-long'})
        })
        /*
         * 自己绘制线段箭头
         */
    function drawArrow(line_id)
    {
        var size = 5;
        //analysis line
        var line = paper.getById(line_id);
        //get last points
        var length = line.attrs.path.length;
        var x1 = line.attrs.path[length-1][1];//单线段起点
        var y1 = line.attrs.path[length-1][2];//单线段起点
        var x2 = line.attrs.path[length-2][1];//单线段终点
        var y2 = line.attrs.path[length-2][2];//单线段终点
        //get last angle
        var angle = Raphael.angle(x1, y1, x2, y2);//API方法获取角度,原直线倾斜度
        var angle_45_one = Raphael.rad(angle - 45);//API方法转变为弧度
        var angle_45_two = Raphael.rad(angle + 45);//API方法转变为弧度
        //arrow points求出箭头的双向点
        var angle_x1 = x1 - Math.cos(angle_45_one) * size;
        var angle_y1 = y1 - Math.sin(angle_45_one) * size;
        var angle_x2 = x1 - Math.cos(angle_45_two) * size;
        var angle_y2 = y1 - Math.sin(angle_45_two) * size;
        //return
        var result = ["M",angle_x1,angle_y1, "L", x1,y1,"L",angle_x2, angle_y2];
        return result;
    }
    </script>
    
    </head>
    
    <body>
        <div id="paper">.
        </div>
    </body>
    </html>
    </span>



  • 相关阅读:
    AngularJS中的Provider们:Service和Factory等的区别
    解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
    关于EL表达式不起作用的问题
    Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群,Tomcat集群
    Java WebService 简单实例
    火狐浏览器中表单内容在表单刷新时候不重置表单信息
    ie文本框内容不居中问题
    javascript call和apply方法
    javascript的词法作用域
    C++提高编程 deque容器
  • 原文地址:https://www.cnblogs.com/MedivhQ/p/3868766.html
Copyright © 2011-2022 走看看