欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Canvas 绘制图片(drawImage())

程序员文章站 2022-03-21 13:59:33
...


demo.html:

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <title>Title</title>  
    <style>  
        canvas {  
            border:1px solid red;  
        }  
        img {  
            display: none;  /* 隐藏img标签,让图像在canvas画布上显示 */  
        }  
    </style>  
</head>  
<body>  
    <canvas id="cvs" width="500" height="500"></canvas>  
    <img src="./imgs/youyouyou.jpg">  
    <script>  
        var cvs = document.getElementById('cvs');  
        var ctx = cvs.getContext('2d');  
        var img = document.querySelector('img');  
  
        /* 
        * ctx.drawImage() 
        * 绘制图像,有三种使用方式。 
        * */  
  
        /* 
        * 第一种,三参数版本: 
        * 把图像绘制到指定的坐标。 
        * */  
  
        // 必须要在img图像加载完毕之后使用  
        /*img.onload = function() {  //bug: 如果图片是从缓存中加载(比较快),图片加载完后,才会注册加载事件,那么就不会监听到加载事件。 解决:在下方手动为img标签指定src属性的值。 
            ctx.drawImage( img, 10, 10 ); 
        }*/  
        //img.src = "...";  //可以保证先注册onload事件,后加载图片。  
  
        /************************************************* 
         * 第二种,五参数版本: 
         * 把图像绘制到指定的坐标,并指定其大小。 
         * */  
  
        /*img.onload = function() { 
            ctx.drawImage( img, 10, 10, 200, 200 ); 
        }*/  
  
        /************************************************** 
         * 第三种,九参数版本: 
         * 把裁剪到的部分图像绘制到指定的坐标,并指定其大小。 
         * */  
        img.onload = function() {  
            ctx.drawImage( img,  
                    300, 100, 400, 400,   //裁剪的位置,裁剪大小  
                    10, 10, 200, 200 );  //显示位置,显示大小  
        } 

        //img.src = "...";  //可以保证先注册onload事件,后加载图片。  
    </script>  
</body>  
</html>