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"> & ...
随机推荐
- 创建一个netcore2.0和angular的项目并运行起来
netcore2.0发布了,喜大普奔. 我们先下载SDK,请看张善友老师的这篇博客 http://www.cnblogs.com/shanyou/p/7363037.html 下载完之后 我用的vs2 ...
- 代理模式(Proxy)C++实现
代理模式 尽管Decorator的实现部分与代理相似,但Decorator的目的不一样.Decorator为对象添加一个或多个功能,而代理则控制对对象的访问. 意图: 为其他对象提供一种代理以控制对这 ...
- [Offer收割]编程练习赛42
对局匹配 直接贪心 #pragma comment(linker, "/STACK:102400000,102400000") #include<stdio.h> #i ...
- 纯CSS3文字Loading动画特效
纯CSS3文字Loading动画特效是一款个性的loading文字加载动画. 在线演示本地下载
- SQL Server-聚焦强制索引查询条件和Columnstore Index
前言 本节我们再来穿插讲讲索引知识,后续再讲数据类型中的日期类型,简短的内容,深入的理解,Always to review the basics. 强制索引查询条件 前面我们也讲了一点强制索引查询的知 ...
- es6学习 http://es6.ruanyifeng.com/
基础学习 http://es6.ruanyifeng.com/ 够了 1字符串 字符串的遍历器接口 for (let codePoint of 'foo') { console.log(code ...
- 提示“CD/DVD找不到媒体所需的驱动”
最近在帮我姐安装win7系统时提 示“CD/DVD找不到媒体所需的驱动”,我用的是U盘安装方式,觉得奇怪,那个镜像文件我已经安装过几十次都没有出错,显然是不会有错的.但是新买的电 脑又不会太大的问题, ...
- node——express实现hello world
创建文件夹,在文件夹内再创建index.js 1.package.json npm init -y 2.安装 npm install express ---save 3.index.js //入口文件 ...
- Linux下挂载分区 (本人实例)
设置分区开机自动挂载 要在/etc/fstab里设置一行 把上面空格去掉就行了
- Project Euler 13 Large sum
题意:计算出以下一百个50位数的和的前十位数字. /************************************************************************* ...