首页 > 其他分享 >Canvas实现多叶草效果的封装

Canvas实现多叶草效果的封装

时间:2022-10-27 20:35:21浏览次数:34  
标签:Canvas 封装 degree 叶草 ctx canvas dy var Math


四叶草的效果:

Canvas实现多叶草效果的封装_2d


想要实现四叶草以及多叶草的效果,需要了解四叶草的构成。

想要在网页上作图,则需要添加画布Canvas,而四叶草是由曲线构成的,可以使用贝塞尔曲线来绘制,

HTML代码:

<canvas id="canvas" width="200" height="150"></canvas>

JS代码:

  function $(id){
return document.getElementById(id);
}
window.onload = function(){
var canvas = $("canvas");
var ctx = canvas.getContext("2d");
createLeaf(ctx,4,canvas.width/2,canvas.height/2,30,80);
ctx.fillStyle = "#13EE8E";
ctx.fill();
}

//封装绘制四叶草的函数
function createLeaf(ctx,n,dx,dy,size,length){
ctx.beginPath();
ctx.moveTo(dx,dy+size);
var degree = 2 * Math.PI / n;
for(var i=1;i<n+1;i++){

//计算控制点的坐标
var cx1 = Math.sin((i-1)*degree)*length + dx;
var cy1 = Math.cos((i-1)*degree)*length + dy;
var cx2 = Math.sin(i*degree)*length + dx;
var cy2 = Math.cos(i*degree)*length + dy;

//计算终点的坐标
var x = Math.sin(i*degree)*size+dx;
var y = Math.cos(i*degree)*size+dy;
ctx.bezierCurveTo(cx1,cy1,cx2,cy2,x,y);
}
ctx.closePath();
}


标签:Canvas,封装,degree,叶草,ctx,canvas,dy,var,Math
From: https://blog.51cto.com/u_12344418/5801928

相关文章

  • HTML5 Canvas基础概念(一)
    Canvas基础知识:Canvas属于行内元素,使用Canvas绘制图形步骤:1、获取Canvas对象2、获取上下文环境对象context。3、开始绘制图形在Canvas对象中常用属性属性说明widthCanvas的......
  • js获取时间文件的封装
    /**年(Y)可用1-4个占位符*月(m)、日(d)、小时(H)、分(M)、秒(S)可用1-2个占位符*星期(W)可用1-3个占位符*季度(q为阿拉伯数字,Q为中文数字)可用1或4个占位符......
  • 【Spark 3.0-JavaAPI-pom】体验JavaRDD函数封装变化
    一、pom<properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><scala.version>2.......
  • java 封装
    封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类随机访问。要访问该类......
  • activiti 常用方法封装及测试
    Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN2.0标准,包括支持对象管理组(OMG),提供技术实现。对于开发者来说,Activiti......
  • vue.js+canvas实现随机验证码
    登录注册啥的,不需要下载插件,上图:<template><divclass="about"><p>当前验证码:{{codeStr}}</p><canvasid="canvas"width="100"height="43"@click="cr......
  • 前端绘图方式Canvas和SVG的区别
    前端绘图方式Canvas和SVG的区别Canvas和SVG是html5中支持2种可视化技术,都是可以在画布上绘制图形和放入图片。下面来介绍和分析一下他们。一.Canvas和SVG简介1.什么是......
  • Antd Modal组件的封装 Modal.show
    antd的modal组件,使用的时候,一般都需要手动去修改visible属性,创建编辑共用的时候,需额外维护数据。然后就想着封装一套不需要维护数据的Modal1、onOk返回promise的时候,执行r......
  • 用pymysql封装连接mysql数据库的工具类【接口自动化框架设计系列】【多测师】
    #coding=utf-8"""===========================Author:多测师_王sirTime:2020/5/2017:24Company:上海多测师信息有限公司===========================""""""查询"""import......
  • 基于Python封装读取ini文件的工具类【接口自动化框架设计系列】【多测师】
    #coding=utf-8"""===========================Author:多测师_王sirTime:2020/5/2017:24Company:上海多测师信息有限公司===========================""""""配置文件类的封......