Canvas画心❤~

本文介绍了一种使用HTML5 Canvas实现动态爱心绘制的方法。通过调整参数控制爱心的位置和大小,并利用计时器逐步绘制出完整的爱心形状。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

520那天做的,有丢丢丑~~~跟着一个人的博客做的,忘了是谁了,这不算侵权把!

//这里的c这个参数和上一篇博文中一样是获取canvas这个对象,x,y是控制画心的位置的,r为控制心得大小~~
function drawingHeart(c,x,y,r){
    //开始画心
    //保存所有的xy坐标
    //var arr=[];
    var r=r;//这个是控制❤的大小的,你要自己设定一下,可以改一下
    var radian;//弧度
    var i;
    var radianDe;//弧度增量
    var time=15;//每个点之间的时间间隔
    var inter;//时长
    var num=360;//分割成360个点,360°
    var startRadian=2*Math.PI;//开始弧度
    var ctx;
    //var m=0;
    //var c=document.getElementById("can");
    ctx=c.getContext('2d');
//setInterval(startAnimation,2000);
    startAnimation();
    function startAnimation(){
        //这个是预留的边,为canvas画布设置大小
        WINDOW_HEIGHT=document.documentElement.clientHeight-20;

        WINDOW_WIDTH=document.documentElement.clientWidth-20;

        ctx.width=WINDOW_WIDTH;

        ctx.height=WINDOW_HEIGHT;
        //console.log(ctx.width,ctx.height);
        drawHeart();//现在才开始画心
    }
    function drawHeart(){
    //画笔颜色,我选的红色
        ctx.strokeStyle="rgba(255,0,0,0.3)";
        ctx.lineWidth=2;//设直线的宽度
        radian=startRadian;//设置弧度为初始弧度
        radianDe=Math.PI/num*2;
        ctx.moveTo(getX(radian),getY(radian));//那两个函数是画心的公式,我看那个大佬用matlab还是啥画了好多种❤,公式不同,想要不同中❤,把公式一换就行了
        i=0;//计数用的,他分了360个点画。
        inter=setInterval(printHeart,time);//得用计时器来控制他画的事时间
    }

    function printHeart(){
        // var c=document.getElementById("can");
        radian+=radianDe;
        ctx.lineTo(getX(radian),getY(radian));//在新旧之间连线
        i++;
        ctx.stroke();//划线
        if(i>=num){
            //console.log(arr);
            clearInterval(inter);//大于等于的时候就清除计时器
            //清除画布
            //i=0;
            //ctx.clearRect(0,0,c.width,c.height);
        }
    }

//公式为x=16sin~3t,y=(13cost-5cos2t-2cos3t-cos4t)
//这里的x,y都可以自己设定,这个xy是改变心得位置的,
    function getX(t){
        //console.log(100+r*(16*Math.pow(Math.sin(t),3)))
        return x+r*(16*Math.pow(Math.sin(t),3))
    }

    function getY(t){
        //console.log(50-r*(13*Math.cos(t)-5*Math.cos(2*t)-2*Math.cos(3*t)-Math.cos(4*t)))
        return y-r*(13*Math.cos(t)-5*Math.cos(2*t)-2*Math.cos(3*t)-Math.cos(4*t));
    }
}

这里写图片描述
如果你要画心的话,记得先把canvas画大一点,然后根据xy,还有r的大小去画心~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值