全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

canvas快速绘制圆形、三角形、矩形、多边形方法介绍

想看前面整理的canvas常用API的同学可以点下面:

canvas学习之API整理笔记(一)

canvas学习之API整理笔记(二)

本系列文章涉及的所有代码都将上传至:http://wd.:81//201612/yuanma/About-Canvas-master_jb51.rar

从本篇文章开始,我会分享给大家canvas绘制的各种基础图形和酷炫的图形,注意:是一系列!欢迎关注!

后续每篇文章我会着重分享给大家一些使用Canvas开发的实例和这些实例的实现思路。

本文看点:使用canvas来绘制常见的各种图形实例,并且会简单封装一下绘制各图形的方法,最后会分享给大家一个封装好的快速绘制多边形的方法。

开始之前

//获取canvas容器
var can = document.getElementById('canvas');
//创建一个画布
var ctx = can.getContext('2d');

绘制圆形

var draw = function(x, y, r, start, end, color, type) {
 var unit = Math.PI / 180;
 ctx.beginPath();
 ctx.arc(x, y, r, start * unit, end * unit);
 ctx[type + 'Style'] = color;
 ctx.closePath();
 ctx[type]();
}

参数解释:x,y-圆心;start-起始角度;end-结束角度;color-绘制颜色;type-绘制类型('fill'和'stroke')。

实例如下图所示:

绘制三角形

var draw = function(x1, y1, x2, y2, x3, y3, color, type) {
 ctx.beginPath();
 ctx.moveTo(x1, y1);
 ctx.lineTo(x2, y2);
 ctx.lineTo(x3, y3);
 ctx[type + 'Style'] = color;
 ctx.closePath();
 ctx[type]();
}

参数解释:x1(2、3),y1(2、3)-三角形的三个点的坐标;color-绘制颜色;type-绘制类型('fill'和'stroke')。

实例如下图所示:

绘制(圆角)矩形

var draw = function(x, y, width, height, radius, color, type){
 ctx.beginPath();
 ctx.moveTo(x, y+radius);
 ctx.lineTo(x, y+height-radius);
 ctx.quadraticCurveTo(x, y+height, x+radius, y+height);
 ctx.lineTo(x+width-radius, y+height);
 ctx.quadraticCurveTo(x+width, y+height, x+width, y+height-radius);
 ctx.lineTo(x+width, y+radius);
 ctx.quadraticCurveTo(x+width, y, x+width-radius, y);
 ctx.lineTo(x+radius, y);
 ctx.quadraticCurveTo(x, y, x, y+radius);
 ctx[type + 'Style'] = color || params.color;
 ctx.closePath();
 ctx[type]();
}

参数解释:x,y-左上角点的坐标;width、height-宽高;radius-圆角;color-绘制颜色;type-绘制类型('fill'和'stroke')。

实例如下图所示:

绘制多边形

var drawPolygon = function(ctx, conf){
 var x = conf && conf.x || 0; //中心点x坐标
 var y = conf && conf.y || 0; //中心点y坐标
 var num = conf && conf.num || 3; //图形边的个数
 var r = conf && conf.r || 100; //图形的半径
 var width = conf && conf.width || 5;
 var strokeStyle = conf && conf.strokeStyle;
 var fillStyle = conf && conf.fillStyle;
 //开始路径
 ctx.beginPath();
 var startX = x + r * Math.cos(2*Math.PI*0/num);
 var startY = y + r * Math.sin(2*Math.PI*0/num);
 ctx.moveTo(startX, startY);
 for(var i = 1; i <= num; i++) {
 var newX = x + r * Math.cos(2*Math.PI*i/num);
 var newY = y + r * Math.sin(2*Math.PI*i/num);
 ctx.lineTo(newX, newY);
 }
 ctx.closePath();
 //路径闭合
 if(strokeStyle) {
 ctx.strokeStyle = strokeStyle;
 ctx.lineWidth = width;
 ctx.lineJoin = 'round';
 ctx.stroke();
 }
 if(fillStyle) {
 ctx.fillStyle = fillStyle;
 ctx.fill();
 }
}

参数说明:

ctx: canvas画布

conf: 配置项,提供以下一些配置

  • x: 中心点横坐标
  • y: 中心点纵坐标
  • num: 多边形的边数
  • r:多边形的半径长度
  • width:多边形线的宽度
  • strokeStyle:边线的颜色
  • fillStyle:填充的颜色

上图效果的代码如下:

上图1的代码:

drawPolygon(ctx, {
 num: 6,
 r: 100,
 strokeStyle: 'blue',
 fillStyle: '#9da'
})

上图2的代码:

drawPolygon(ctx, {
 num: 4,
 r: 150,
 strokeStyle: 'red',
 width: 4
})

上图3的代码:

drawPolygon(ctx, {
 x: 800,
 y: 250,
 num: 10,
 fillStyle: '#000'
})

结语

我们总结一下,使用canvas绘制图形就是那几个函数:beginPath、arc、moveTo、lineTo、closePath、fill、stroke。当我们能够熟练掌握并运用自如的时候,就能够独当一面了。加油吧,骚年们!

本文涉及的代码我已经上传至github,项目代码github地址,喜欢的同学点个Star,多谢多谢~

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# canvas  # 圆形  # 三角形  # 矩形  # 多边形  # Android编程之canvas绘制各种图形(点  # 直线  #   #   # 椭圆  # 文字  # 曲线  # 圆角矩形)  # canvas绘制多边形  # 中心点  # 给大家  # 上图  # 所示  # 角形  # 我会  # 如下图  # 传至  # 圆角  # 运用自如  # 都将  # 想看  # 当我们  # 后会  # 那几个  # 看点  # 创建一个  # 装好  # 加油吧  # 可以点 


相关文章: 如何在服务器上配置二级域名建站?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  如何在云指建站中生成FTP站点?  如何快速搭建高效香港服务器网站?  已有域名和空间如何快速搭建网站?  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  网站设计制作企业有哪些,抖音官网主页怎么设置?  长沙企业网站制作哪家好,长沙水业集团官方网站?  购物网站制作公司有哪些,哪个购物网站比较好?  浅析上传头像示例及其注意事项  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  如何选择高效响应式自助建站源码系统?  如何获取开源自助建站系统免费下载链接?  如何用PHP快速搭建高效网站?分步指南  如何确保FTP站点访问权限与数据传输安全?  长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?  临沂网站制作公司有哪些,临沂第四中学官网?  建站之星备案流程有哪些注意事项?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  建站之星价格显示格式升级,你的预算足够吗?  h5在线制作网站电脑版下载,h5网页制作软件?  高防服务器租用指南:配置选择与快速部署攻略  建站之星代理如何获取技术支持?  建站之星导航如何优化提升用户体验?  山东网站制作公司有哪些,山东大源集团官网?  相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?  如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  清除minerd进程的简单方法  建站之星安装模板失败:服务器环境不兼容?  想学网站制作怎么学,建立一个网站要花费多少?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  小建面朝正北,A点实际方位是否存在偏差?  宿州网站制作公司兴策,安徽省低保查询网站?  ,怎么在广州志愿者网站注册?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  如何用虚拟主机快速搭建网站?详细步骤解析  网站制作需要会哪些技术,建立一个网站要花费多少?  南京网站制作费用,南京远驱官方网站?  c# await 一个已经完成的Task会发生什么  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  css网站制作参考文献有哪些,易聊怎么注册?  建站主机空间推荐 高性价比配置与快速部署方案解析  免费网站制作appp,免费制作app哪个平台好?  建站主机服务器选购指南:轻量应用与VPS配置解析  如何快速完成中国万网建站详细流程?  如何配置FTP站点权限与安全设置?  建设网站制作价格,怎样建立自己的公司网站?  深圳网站制作平台,深圳市做网站好的公司有哪些?  建站之星logo尺寸如何设置最合适? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。