html5 canvas画图

这篇博客介绍了如何使用HTML5的canvas元素来绘制带箭头的直线,并结合JavaScript实现动态计算和绘制。同时,还展示了如何在canvas上绘制实心圆,以及添加文本的方法。这对于前端开发者在网页中创建自定义图形和交互元素具有指导意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div>
        <canvas class="drawLineC" width="410" height="70px" style="border:dashed 2px #CCC;margin-top: 5px">您的浏览器不支持显示该图像,请升级你的浏览器</canvas>
    </div>
</body>
</html>

 

画图

//区域宽度
var width=document.body.clientWidth*0.85;

var fromX=width/2;//中心点
var lineY=50;//直线y轴
var toX1=2*fromX-5;//向右线x终点
var toX2=5;//向左线x终点
var theta=30;//箭头倾斜角度
var headlen=20;//箭头斜线长度
var lineWidth=3;//线条宽度
var color='#f36';

//画图
var can=$('body').find(".drawLineC")[0];
var ctx=can.getContext('2d');
drawArrow(ctx,fromX,lineY,toX1,lineY,theta,headlen,lineWidth,color);
drawArrow(ctx,fromX,lineY,toX2,lineY,theta,headlen,lineWidth,color);

//画实心圆
var r=8;
drawCir(ctx,fromX,lineY,r,0,2*Math.PI,color);

drawText(ctx,fromX-40,20,'责任心',color);

//写文本
function drawText(ctx,x,y,text,color){
    ctx.beginPath();
    ctx.fillStyle =color;
    ctx.font="20px Arial";
    ctx.fillText(text,x,y);
}

//画实心圆
function drawCir(ctx,x,y,r,start,stop,color){
    ctx.beginPath();
    ctx.strokeStyle=color;
    ctx.lineWidth=2*r;
    ctx.arc(x,y,r,start,stop);//x,y,r,start,stop
    ctx.stroke();
}

//画带箭头直线
function drawArrow(ctx, fromX, fromY, toX, toY,theta,headlen,width,color) {
    theta = typeof(theta) != 'undefined' ? theta : 30;
    headlen = typeof(theta) != 'undefined' ? headlen : 10;
    width = typeof(width) != 'undefined' ? width : 1;
    color = typeof(color) != 'color' ? color : '#000';

    // 计算各角度和对应的P2,P3坐标
    var angle = Math.atan2(fromY - toY, fromX - toX) * 180 / Math.PI,
        angle1 = (angle + theta) * Math.PI / 180,
        angle2 = (angle - theta) * Math.PI / 180,
        topX = headlen * Math.cos(angle1),
        topY = headlen * Math.sin(angle1),
        botX = headlen * Math.cos(angle2),
        botY = headlen * Math.sin(angle2);

    ctx.save();
    ctx.beginPath();

    var arrowX = fromX - topX,
        arrowY = fromY - topY;

    ctx.moveTo(arrowX, arrowY);
    ctx.moveTo(fromX, fromY);
    ctx.lineTo(toX, toY);
    arrowX = toX + topX;
    arrowY = toY + topY;
    ctx.moveTo(arrowX, arrowY);
    ctx.lineTo(toX, toY);
    arrowX = toX + botX;
    arrowY = toY + botY;
    ctx.lineTo(arrowX, arrowY);
    ctx.strokeStyle = color;
    ctx.lineWidth = width;
    ctx.stroke();
    ctx.restore();
}

效果图

简介: 新的 HTML5 规范旨在帮助开发人员更轻松的编写出各类 Web 应用,以顺应当前 SaaS,云计算以及 RIA 等技术的最新趋势。在 HTML5 得以广泛推广之前,开发人员通常使用 SVG,VML 等技术进行 Web 绘图操作,但这些基于 XML 的绘图语言声明式的绘图方式并不能满足复杂绘图操作在性能上的需求,比如 Web 游戏所需要的像素级别的绘图能力。HTML5 canvas 元素的出现填补了这种不足,开发人员可以使用 JavaScript 脚本语言在 canvas 中进行一系列基于命令的图形绘制操作,本文将通过讲解如何使用 canvas 元素进行基本绘图操作,以及完成简单的动画和用户交互任务,阐明 canvas 在帮助构建 Web 图形类应用时所能够提供的能力。更多html5相关信息请关注html5中国:http://www.html5cn.org 背景介绍 HTML5 中新引入的 canvas 元素使得 Web 开发人员在无须借助任何第三方插件(如 Flash,Silverlight)的情况下,可以直接使用 JavaScript 脚本在 Web 页面进行绘图。它首次由苹果公司的 Webkit 框架引入实现,并成功运用在 Safari 浏览器中,读者在 这里可以体验到基于 canvas 的精彩示例。目前,canvas 已成为 HTML5 规范中的事实性标准,并且已经被 Firefox 3.0+, Safari 3.0+, Chrome 3.0+, Opera10.0+ 等浏览器所支持。最近(本文撰写之时),IE 也正式宣称将在其 9.0 版本之后,开始对 canvas 元素进行支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值