마우스를 움직여 보세요.
            
        마우스 이펙트 - 페인트 효과
<canvas id='canvas'></canvas>
<script>
    function OilPainting(){
  
        var canvas;
        var context;
        var width;
        var height;
        var startPos = {x: window.innerWidth/2, y: window.innerHeight/2};
        var prevPos = {x: window.innerWidth/2, y: 0};
        var dist = {x: 0, y: 0};
        var colour = '#'+Math.floor(Math.random()*16777215).toString(16);
        
        
        this.initialize = function(){
            canvas  = document.getElementById("canvas");
            context = canvas.getContext('2d');
        
            width = window.innerWidth
            height = window.innerHeight
            
            canvas.width = width;
            canvas.height = height;
        
            canvas.addEventListener('mousemove', MouseMove, false);
            canvas.addEventListener('click', MouseDown, false);
            canvas.addEventListener('dblclick', MouseDbl, false);	
        }
        
        
        var MouseMove = function(e) {
            var distance = Math.sqrt(Math.pow(prevPos.x - startPos.x, 2) +
                                    Math.pow(prevPos.y - startPos.y, 2));
                                    
            var a = distance * 10 * (Math.pow(Math.random(), 2) - 0.5);
            
            var r = Math.random() - 0.5;
            
            var size = (Math.random() * 15) / distance;
            
            dist.x = (prevPos.x - startPos.x) * Math.sin(0.5) + startPos.x;
            dist.y = (prevPos.y - startPos.y) * Math.cos(0.5) + startPos.y;
            
            startPos.x = prevPos.x;
            startPos.y = prevPos.y;
            
            prevPos.x = (e.layerX);
            prevPos.y = (e.layerY);
        
        // ------- Draw -------
        var lWidth = (Math.random()+20/10-0.5)*size+(1-Math.random()+30/20-0.5)*size;
        context.lineWidth = lWidth;
        context.strokeWidth = lWidth;
        
        context.lineCap = 'round';
            context.lineJoin = 'round';
            
        context.beginPath(); 
        context.moveTo(startPos.x, startPos.y);
        context.quadraticCurveTo(dist.x, dist.y, prevPos.x, prevPos.y);
        
        context.fillStyle = colour;
        context.strokeStyle = colour;
        
        context.moveTo(startPos.x + a, startPos.y + a);
        context.lineTo(startPos.x + r + a, startPos.y + r + a);
        
        context.stroke();
        context.fill();
        
        context.closePath();
        }
        
        var MouseDown = function(e) {
            e.preventDefault();
            colour = '#'+Math.floor(Math.random()*16777215).toString(16);
            context.fillStyle = colour;
            context.strokeStyle = colour;
        }
        
        var MouseDbl = function(e) {
            e.preventDefault();
            context.clearRect(0, 0, width, height);
        }
            
    }
    var app = new OilPainting();
    app.initialize();
</script>