美文网首页程序员
canvas实现剪纸漏洞效果

canvas实现剪纸漏洞效果

作者: infi_ | 来源:发表于2018-01-08 15:04 被阅读0次

剪纸漏洞效果主要是利用了canvas的非零环绕规则
简单来说就是canvas fill填充的是同一路径顺时针和逆时针中间的部分,简称
非零环绕
效果如图


var canvas_2=document.getElementById("canvas_2");
var can2_context=canvas_2.getContext("2d");
var width_2=canvas_2.width
var height_2=canvas_2.height
var testx=300
var testy=300
function drawCutouts(){

    can2_context.beginPath();
    addOurterRectanglePath()
    addrect()
    addTrianglePath()
    addarc()
    can2_context.fill()
}

function addOurterRectanglePath(){
     can2_context.rect(110,25,370,335)
     can2_context.closePath()
}


function rect(x,y,w,h,direction){

    if(direction){
        can2_context.moveTo(x,y);
        can2_context.lineTo(x,y+h)
        can2_context.lineTo(x+w,y+h)
        can2_context.lineTo(x+w,y)
    }else{
        can2_context.moveTo(x,y)
        can2_context.lineTo(x+w,y)
        can2_context.lineTo(x+w,y+h)
        can2_context.lineTo(x,y+h)

    }
    can2_context.closePath()
}
function addrect(){
    rect(310,55,70,35,true)  //true为逆时针
}
function addTrianglePath(){
   
   can2_context.moveTo(400,200)
   can2_context.lineTo(250,115)
   can2_context.lineTo(200,200)
   can2_context.closePath()

}



function addarc(){
    if(testy>335){testy=25}
    testy=testy+1
    
    can2_context.arc(testx,testy,40,0,Math.PI*2,true)
   
}

function hi(){
   can2_context.clearRect(0,0,width_2,height_2)
   drawCutouts()

   requestAnimationFrame(hi)

}
hi()

相关文章

  • canvas实现剪纸漏洞效果

    剪纸漏洞效果主要是利用了canvas的非零环绕规则简单来说就是canvas fill填充的是同一路径顺时针和逆时针...

  • 前端效果链接

    canvas canvas实现各种点线效果 Canvas设置width与height 的问题!

  • canvas中通过globalAlpha实现渐隐效果

    canvas 想要实现渐隐效果,首先要理解显示,隐藏效果的原理,在canvas中怎么实现显示或者隐藏的效果呢?ca...

  • 基于canvas画板原理(H5)

    一个简单的小事例,利用canvas实现画板效果。实现原理:鼠标事件+canvas效果图: 代码: 如有问题欢迎交流...

  • 2017-12-28

    使用canvas和js实现烟花的效果 效果如下:

  • canvas2-text

    canvas画板结合JS事件实现写字效果

  • canvas烟花锦集

    canvas可以实现不同动画效果,本文主要记录几种不同节日烟花效果实现。 原文链接 实现一 效果地址 html c...

  • canvas实现圆环效果

    Document .box { position: absolut...

  • 【个人提升】canvas气泡漂浮动画

    canvas气泡漂浮动画实现效果思路: 1.获取鼠标移动的x、y坐标 //鼠标滑动 canvas.onmousem...

  • canvas环形倒计时组件

    效果如下图一: Canvas环形倒计时组件 Canvas环形倒计时是基于Canvas实现的倒计时,建议于移动端使用...

网友评论

    本文标题:canvas实现剪纸漏洞效果

    本文链接:https://www.haomeiwen.com/subject/kfjbnxtx.html