zoukankan      html  css  js  c++  java
  • 模糊效果小案例(canvas)

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="utf-8">
    	<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    	<style>
    	  *{
    	  	margin:0;
    	  	padding:0;
    	  }
    		#blue-div{
    			400px;
    			height:460px;
    			margin:0 auto;
    			position: relative;
    		}
    		#blue-image{
    			display:block;
    			400px;
    			height:460px;
    			margin:0 auto;
    			filter:blur(5px);
    			position: absolute;
    			left:0px;
    			top:0px;
    			z-index: 0;
    		}
    		#canvas{
    			display: block;
    			margin: 0  auto;
    			position: absolute;
    			left:0;
    			top:0;
    			z-index: 500;
    			/* background-color:red; */
    		}
    		.button{
    			display:block;
    			position: absolute;
    			z-index: 1000;
    			50px;
    			height:20px;
    			color:white;
    			text-decoration: none;
    			text-align: center;
    			line-height: 20px;
    			border-radius: 5px;
    		}
    		#reset-button{
    			left:100px;
    			bottom:10px;
    			background-color:#058;
    		}
    		#reset-button:hover{
    			background-color:#047;
    		}
    		#show-button{
    			right:100px;
    			bottom:10px;
    			background-color:#085;
    		}
    		#show-button{
    			background-color:#074;
    		}
    	</style>
    </head>
    <body>
    	<div id='blue-div'>
    		<img id='blue-image' src="luhan.jpg" >
    		<canvas id='canvas'></canvas>
    		<a href="javascript:reset()" class='button' id='reset-button'>Reset</a>
    		<a href="javascript:show()" class='button' id='show-button'>Show</a>
    	</div>
    	
    </body>
    <script>
    	var canvasWidth=400;
    	var canvasHeight=460;
    	var canvas=document.getElementById('canvas');
    	canvas.width=canvasWidth;
    	canvas.height=canvasHeight;
    	var ctx=canvas.getContext("2d");
    	var radius=20;
    	var clippingRegion={x:-1,y:1,r:radius};
    
    	var image=new Image();
    	image.src='luhan.jpg';
    	image.onload=function(e){
    		initCanvas()
    	}
    
    	function initCanvas(){
    		clippingRegion=clippingRegion={x:Math.random()*(canvas.width-2*radius)+radius,y:Math.random()*(canvas.height-2*radius)+radius,r:radius};
    		draw(image,clippingRegion)
    	}
    	function setClippingRegion(clippingRegion){
    		ctx.beginPath();
    		ctx.arc(clippingRegion.x, clippingRegion.y, clippingRegion.r,0,2*Math.PI,true)
    		ctx.clip();
    	}
    	function draw(image,clippingRegion){
    		ctx.clearRect(0, 0,canvas.width,canvas.height);
    		ctx.save();
    		setClippingRegion(clippingRegion);
    		ctx.drawImage(image,0,0); 
    		ctx.restore();
    	}
    	function show(){
    		
    		var id=setInterval(function(){
    			clippingRegion.r+=20;
    			if(clippingRegion.r>2*Math.max(canvas.width,canvas.height)){
                clearInterval(id);
    			}
    			draw(image,clippingRegion);
    
    		}, 30)
    	}
    	function reset(){
    		initCanvas()
    	}
    </script>
    </html>
    

      

  • 相关阅读:
    PHP ceil() 函数
    PHP Array 函数
    php中的include()的使用技巧
    [观察者模式]在游戏开发中的应用
    [策略模式]在游戏开发中的应用
    使用EA将源码转化为类图
    PAT 1013 数素数 (20)
    PAT 1034 有理数四则运算(20)
    PAT 1033 旧键盘打字(20)
    PAT 1032 挖掘机技术哪家强(20)
  • 原文地址:https://www.cnblogs.com/luxiaoxiao/p/6490143.html
Copyright © 2011-2022 走看看