canvas绘制爱心
欢迎加入前端交流群交流知识获取视频资料:
需求:绘制爱心图像轨迹。
实现:直接贴代码吧!
预览地址:https://codepen.io/wzc570738205/pen/dqqBpj

<!DOCTYPE>
<html> <head>
<meta charset="UTF-8">
<title>模仿笔画</title>
<style type="text/css">
#_canvas {
background-color: rgb(, , );
border: 1px solid #;
}
</style>
</head> <body> <canvas id="_canvas" width="" height=''>sorry, your broswer does not support html5!</canvas> <script type="text/javascript">
var canvas_ = document.getElementById("_canvas");
var context = canvas_.getContext("2d");
//线条设置
context.strokeStyle = "red";
context.lineWidth = ; //线条数组
var array_paint = []; //背景图
var img = new Image()
img.src = "https://ws1.sinaimg.cn/large/0065nu1aly1fv5kg78i8kj30xc0m8ank.jpg"
context.drawImage(img, , ); function paint() {
context.beginPath();
context.moveTo(array_paint[][], array_paint[][]);
if (array_paint.length == )
context.lineTo(array_paint[][] + , array_paint[][] + );
else {
var i = ;
for (i in array_paint) {
context.lineTo(array_paint[i][], array_paint[i][]);
context.moveTo(array_paint[i][], array_paint[i][]);
} }
context.closePath();
context.stroke();
} let num = -;
let timer = null;
let list = []
//创建坐标
list = heartShape(, , ) function people() {
num++;
var imgpeople = new Image()
imgpeople.src = "https://ws1.sinaimg.cn/large/0065nu1aly1fvcmafdhe6j305k05k3ye.jpg"
context.drawImage(imgpeople, list[num].current_x * / - , list[num].current_y * / - , ,
);
context.clearRect(, , screen.width, screen.height);
context.drawImage(img, , ); console.log(list[num].current_x * / );
if (num < list.length - ) {
let current_x = (Math.random() * ).toFixed();
let current_y = (Math.random() * ).toFixed();
array_paint.push([list[num].current_x * / , list[num].current_y * / ]);
paint();
if (num > ) {
context.drawImage(imgpeople, list[num].current_x * / - , list[num].current_y * / -
, , );
}
} else {
array_paint = [];
for (var i = ; i < list.length; i++) {
array_paint.push([list[i].current_x * / , list[i].current_y * / ]);
paint();
context.drawImage(imgpeople, list[num].current_x * / - , list[num].current_y * / -
, , );
}
clearInterval(timer);
} } timer = setInterval(people, ) function heartShape(r, dx, dy) { //r:大小;dx:水平偏移;dy:垂直偏移;c:颜色
var m, n, x, y, i;
let arr = [];
for (i = ; i <= 7.9; i += 0.04) {
m = i;
n = -r * (((Math.sin(i) * Math.sqrt(Math.abs(Math.cos(i)))) / (Math.sin(i) + 1.4)) - * Math.sin(i) +
);
x = n * Math.cos(m) + dx;
y = n * Math.sin(m) + dy;
arr.push({
current_x: x,
current_y: y
})
}
return arr
}
</script>
</body> </html>
canvas绘制爱心的更多相关文章
- canvas绘制爱心的几种方法
第一种方法:桃心形公式 代码实现的一种方法 <!DOCTYPE html> <html lang="en"> <head> <meta c ...
- js利用canvas绘制爱心
js代码如下: var cav = document.getElementById("a").getContext("2d"); function draw(x ...
- HTML5学习总结——canvas绘制象棋(canvas绘图)
一.HTML5学习总结——canvas绘制象棋 1.第一次:canvas绘制象棋(笨方法)示例代码: <!DOCTYPE html> <html> <head> & ...
- 用canvas绘制折线图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 封装 用canvas绘制直线的函数--面向对象
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 学习笔记:HTML5 Canvas绘制简单图形
HTML5 Canvas绘制简单图形 1.添加Canvas标签,添加id供js操作. <canvas id="mycanvas" height="700" ...
- canvas绘制经典折线图(一)
最终效果图如下: 实现步骤如下:注-引用了jQuery HTML代码 <!doctype html> <html lang="en"> <head&g ...
- Canvas绘制图形
1.Canvas绘制一个蓝色的矩形 <!DOCTYPE html> <html> <head lang="en"> <meta chars ...
- [canvas]利用canvas绘制自适应的折线图
前段时间学习了用canvas绘制折现图,且当画布变换大小,折现图会随之变化,现附上代码 <!DOCTYPE html> <html lang="en"> & ...
随机推荐
- Css问题 margin float 文档流 背景图底部充满
今天来整理一下做网页遇到的问题吧 1.插入背景图片并使图片居于div底部充满整个行. <style> background:url(xxx.jpg) no-repeat; backgrou ...
- DataTable和DataRow和DataColumn ~~~~~~~~~~[][]
DataSet.Tables[0].Rows[0][1]表示DataSet中第一张表(因为Tables[0]就是第一张表的意思)中第一行(Rows[0][]) 第二列(Rows[][1])的数据. D ...
- MySQL定时任务与存储过程实例
shell 定时任务:/usr/bin/mysql -uroot -pxxxxx databasename -e "update table set ......."mysq ...
- 用户 'NT Service\MSSQLServerOLAPService' 登录失败
初学SSAS,部署微软官方示例项目AdventureWorksDW2012Multidimensional时出现错误:用户 'NT Service\MSSQLServerOLAPService' 登录 ...
- Java之关于面向对象
面向对象,呃,别给我说程序员找不到对象,那是windows才会出现的情况~~~ 就简单记下笔记什么的吧. 1.关于定义和赋值 之前总是搞混淆,说到底是没有搞清楚. shit bigOne=new sh ...
- mysql组复制集群简介
mysql组复制集群拓扑: 环境: centos6.5 mysql5.7.19 一.组复制搭建: 配置hosts文件 再三台服务器上分别启动一个mysql实例,共三个. 参考配置文件如下: serve ...
- struts中日期处理以及文件下载
日期处理 对于jsp提交的基本数据类型和日期格式为yyyy-MM-dd的自动转换为相应的 对于其它的日期格式需要自定义转换器 局部类型转换器 1,写转换器类(继承StrutsTypeConverter ...
- js进度条插件pace.js
主要用到themes文件夹和pace.js文件
- mysql笔记1------基础
1.简介 (这两个结构就是ER模型)
- IOS - Ask for Application Badge permission ios8
UIUserNotificationSettings* notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUs ...