canvas应用-思维导图

简介: canvas应用例子-思维导图效果图如下:函数说明: // 求圆上一点坐标,返回坐标点 function circlePoint(x, y, r, a) { var tmpx = x + r * Math.

canvas应用例子-思维导图

效果图如下:



函数说明:

// 求圆上一点坐标,返回坐标点
function circlePoint(x, y, r, a) {
    var tmpx = x + r * Math.cos(a * Math.PI / 180);
    var tmpy = y + r * Math.sin(a * Math.PI / 180);
    return {
        x: tmpx,
        y: tmpy
    }
}

 

//画正多边形
function polygon(context,x, y, n, r) {
    context.beginPath();
    context.fillStyle = "rgba(215,216,217,.3)"; 
    context.strokeStyle = "hsl(210,0%,50%)"; 
    context.lineWidth = 1; 
    for(var i=0;i<n;i++){
        var tmpPoint = circlePoint(x, y, r, (360 / n) * i);
        if(0===i){
            context.moveTo(tmpPoint.x, tmpPoint.y);
        } else{
            context.lineTo(tmpPoint.x, tmpPoint.y);
        }

    }
    context.closePath();
    context.stroke();
    context.fill();
}

 

//画圆形
function circle(context,x,y,n,r){
    context.beginPath();
    context.arc(x, y, r, 0, Math.PI * 2, true);
    context.strokeStyle = "hsl(210,0%,50%)";
    context.fillStyle = "rgba(215,216,217,.3)";
    context.lineWidth = 1; 
    context.stroke();
    context.fill();
}

 

// x坐标
// y坐标
// rnum 正多变行的边的个数, 至少为3个,否则为圆形
// cnum 同心图形个数
// radnum 圆形放射条数,只有圆形起作用
// R 最大半径
// rot 旋转角度
// arr 交点,交点个数与正多边形边数相同或与圆形放射条数相同
function drawGraph(ctx,x,y,rnum,cnum,radnum,R,rot,arr){
    var isCircle = rnum<3?true:false;
    var tmpNum = 0;
    if(isCircle){
        tmpNum = radnum;
    } else{
        tmpNum = rnum;
    }
    for(var i =0;i<cnum;i++){
        if(isCircle){
            circle(ctx,x, y, rnum, R-(R/cnum)*i);
        } else{
            polygon(ctx,x, y, rnum, R-(R/cnum)*i);
        }
    }


    for (var i = 0; i < tmpNum; i++) {
        ctx.beginPath();
        ctx.strokeStyle = "#99999";
        ctx.lineWidth = 1;
        ctx.moveTo(x, y);
        var tmpPoint = circlePoint(x, y, R, rot + (360 / tmpNum) * i);
        ctx.lineTo(tmpPoint.x, tmpPoint.y);
        ctx.stroke();
    }


    ctx.beginPath();
    ctx.strokeStyle = "#93c54f";
    ctx.lineWidth = 2;
    var grd = ctx.createRadialGradient(x, y, 0, x, y, R);
    grd.addColorStop(0, "rgba(255,255,255,0)");
    grd.addColorStop(1, "rgba(128,187,45,0.6)");
    ctx.fillStyle = grd;
    for (var i = 0; i < tmpNum; i++) {
        var tmpPoint = circlePoint(x, y, R * arr[i], rot + (360 / tmpNum) * i);
        if (0 === i) {
            ctx.moveTo(tmpPoint.x, tmpPoint.y);
        } else {
            ctx.lineTo(tmpPoint.x, tmpPoint.y);
        }
    }

    ctx.closePath();
    ctx.stroke();
    ctx.fill();
}

 

//使用方法
drawGraph(ctx,150,200,6,4,0,120,0,[1, 0.25, 0.75, 0.75, 1,0.5]);
drawGraph(ctx,450,200,0,4,5,120,-30,[1, 0.75, 0.75, 0.75, 0.5]);

 

例子:demo

 

参考:
https://developer.mozilla.org/zh-CN/docs/Web/Guide/HTML/Canvas_tutorial
http://www.w3schools.com/html/html5_canvas.asp

目录
相关文章
|
1月前
|
前端开发 JavaScript API
如何使用 Canvas 实现复杂的动画效果?
【10月更文挑战第24天】使用Canvas实现复杂的动画效果,需要综合运用JavaScript、数学知识以及对Canvas API的深入理解。
71 2
|
2月前
|
Web App开发 数据可视化 前端开发
Pixi入门第一章:绘制一个小精灵
这篇文章是关于Pixi.js的入门教程第一部分,指导读者如何创建并显示一个基本的2D精灵,适用于开始学习Pixi.js进行2D图形开发的初学者。
72 0
Pixi入门第一章:绘制一个小精灵
|
2月前
Pixi入门第二章:绘制各种图形
这篇文章是Pixi.js入门系列的第二章,重点在于如何使用Pixi.js绘制各种基本图形,如矩形、圆角矩形、圆形和椭圆,并提供了具体的代码示例。
65 0
Pixi入门第二章:绘制各种图形
|
2月前
|
图形学
Pixi入门第三章:绘制更多内容
这篇文章作为Pixi.js入门教程的第三章,介绍了如何使用鼠标事件(如mousemove)来实现在画布上绘制线条的功能,并提供了实现动态绘制的代码示例。
31 0
|
5月前
|
前端开发
Canvas添加了橡皮擦工具的画板项目和只能画圆的源码
Canvas添加了橡皮擦工具的画板项目和只能画圆的源码
|
5月前
|
前端开发
Canvas绘画之倒三角形,渐变色效果源码
Canvas绘画之倒三角形,渐变色效果源码
|
6月前
技术笔记:SVG学习之stroke
技术笔记:SVG学习之stroke
89 0
|
移动开发 前端开发 JavaScript
利用Canvas进行网上绘图
利用Canvas进行网上绘图
200 0
|
前端开发 JavaScript
教你如何用Canvas绘制整身的哆啦A梦
教你如何用Canvas绘制整身的哆啦A梦 上牌你文章我们说到了如何使用canvas绘制哆啦A梦,但当时只是绘制了哆啦A梦的头部,之后有学员留言说可不可以教大家绘制整身的哆啦A梦,想了想,决定安排一下。如图: 在这里插入图片描述 HTML代码: &lt;canvas id=&quot;my_canvas&quot;&gt;&lt;/canvas&gt; &lt;canvas id=&quot;my_canvas2&quot;&gt;&lt;/canvas&gt; 1 2 CSS代码: * { margin: 0; } #my_canvas {
教你如何用Canvas绘制整身的哆啦A梦
|
前端开发 JavaScript
教你如何利用canvas画布绘制哆啦A梦
订阅专栏 教你如何利用canvas画布绘制哆啦A梦 最近一直在练习使用canvas画布标签,今天教大家如何使用canvas画布绘制哆啦A梦。如图: HTML代码: <canvas id="my_canvas"></canvas> 1 CSS代码: canvas { display:block; margin:0 auto; background: pink } 1 2 3 4 5 JavaScript代码: var oCanvas = document.getEleme
教你如何利用canvas画布绘制哆啦A梦