html5绘制心形图案,HTML5/Canvas 渐变色彩的心形图案

JavaScript

语言:

JaveScriptBabelCoffeeScript

确定

window.requestAnimFrame = (function() {

return window.requestAnimationFrame ||

window.webkitRequestAnimationFrame ||

window.mozRequestAnimationFrame ||

window.oRequestAnimationFrame ||

window.msRequestAnimationFrame ||

function(callback) {

window.setTimeout(callback, 1000 / 60);

};

})();

var c = document.getElementById('canv');

var $ = c.getContext('2d');

var w = c.width = window.innerWidth;

var h = c.height = window.innerHeight;

var w2 = w * 0.5;

var h2 = h * 0.5;

var u = 0;

var hearts = [];

var hp = [

[-14, -81, -149, -94, -167, 0],

[-184, 95, -28, 157, 0, 250],

[28, 157, 184, 95, 167, 0],

[149, -94, 14, -81, 0, 0]

];

function Love() {

document.body.appendChild(c);

function anim() {

one0one();

requestAnimFrame(anim);

}

for (var i = 0; i < 101; i++) {

var heart = new Heart(w2, h2 - 180, 1.5 + (0.15 * (i - 101) / (i + 1.5)));

hearts.push(heart);

}

anim();

}

function one0one() {

$.clearRect(0, 0, w, h);

$.globalCompositeOperation = "xor";

u -= 0.5;

for (var i = 0; i < hearts.length; i++) {

hearts[i].render($);

}

}

function Heart(x, y, s) {

this.x = x || w2;

this.y = y || h2;

this.s = s || 1;

this.render = function($) {

$.beginPath();

$.fillStyle = 'hsl(' + u + ', 77%, 46%)';

$.moveTo(this.x, this.y);

for (var i = 0; i < 4; i++) {

$.bezierCurveTo(hp[i][0] * this.s + this.x, hp[i][1] * this.s + this.y, hp[i][2] * this.s + this.x, hp[i][3] * this.s + this.y, hp[i][4] * this.s + this.x, hp[i][5] * this.s + this.y);

}

$.closePath();

$.fill();

};

}

Love();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值