HTML5画布(图像)

这篇文章介绍了HTML5Canvas中drawImage方法的三种用法,包括绘制完整图像、指定尺寸以及复制图像局部。同时,展示了如何利用createPattern方法实现图像的平铺效果,支持不同类型的平铺模式(no-repeat,repeat-x,repeat-y,repeat)。案例代码详细展示了这些功能的实际应用。
摘要由CSDN通过智能技术生成

案例1:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script>
     window.onload=function(){
            var c=document.getElementById("myCanvas");
            var cxt= c.getContext("2d");
            var image= new Image();
            image.src="shanchu.png";
            cxt.drawImage(image,0,0);
        }
    </script>
</head>
<body>
<canvas id="myCanvas" width="450" height="350" style="border: 1px solid #dddddd">您的浏览器不支持
</canvas>
 
</body>
</html>
 

注释:

(1)绘制图像时,需要使用drawImage方法:

方法1:cxt.drawImage(image,x,y);

image是一个Image对象,用该对象来装载图像文件。x与y为绘制时该图像在画布中的起始坐标。

方法2:cxt.drawImage(image,x,y,w,h);

前三个参数同上,w,h是指绘制时的图像的宽度与高度。

方法3:cxt.drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh);

sx与sy分别表示源图像的被复制区域在画布中的起始横坐标与起始纵坐标,sw与sh表示被复制区域的宽度与高度,dx与dy表示复制后的目标图像在画布中的起始横坐标与起始纵坐标,dw与dh表示复制后的目标图像的宽度与高度。该方法可以只复制图像的局部,只要将sx与sy设为局部区域的起始点坐标,将sw与sh设为局部区域的宽度与高度就可以了。

案例2​​​​​​:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script>
     window.onload=function(){
            var c=document.getElementById("myCanvas");
            var cxt= c.getContext("2d");
            var image= new Image();
            image.src="shanchu.png";
            cxt.drawImage(image,0,0,200,200);
            cxt.drawImage(image,0,0,100,100,210,0,200,200);
        }
    </script>
</head>
<body>
<canvas id="myCanvas" width="450" height="350" style="border: 1px solid #dddddd">您的浏览器不支持
</canvas>
 
</body>
</html>
  1. 效果图:

  2. 案例3:
    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <script>
         window.onload=function(){
                var c=document.getElementById("myCanvas");
                var cxt= c.getContext("2d");
                var image= new Image();
                image.src="shanchu.png";
                drawImage(cxt,image);
            }
         function drawImage(cxt,image)
         {
             var i=0;
             for(i=0;i<5;i++)
             {
                 cxt.drawImage(image,0+i*50,0+i*30,100,100);
             }
          }
        </script>
    </head>
    <body>
    <canvas id="myCanvas" width="450" height="350" style="border: 1px solid #dddddd">您的浏览器不支持
    </canvas>
     
    </body>
    </html>
     
    效果图:

 

  1. 图像平铺

    案例1:
    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <script>
         window.onload=function(){
                var c=document.getElementById("myCanvas");
                var cxt= c.getContext("2d");
                var image= new Image();
                image.src="shanchu.png";
                var ptrn=cxt.createPattern(image,'repeat');
                cxt.fillStyle=ptrn;
                cxt.fillRect(0,0,450,350);
            }
        </script>
    </head>
    <body>
    <canvas id="myCanvas" width="450" height="350" style="border: 1px solid #dddddd">您的浏览器不支持
    </canvas>
     
    </body>
    </html>

 效果图:

注释:
(1)cxt.createPattern(image,type);
         该方法使用两个参数,image参数为要平铺的图像,type参数的值必须是下面的字符串值之一:
         no-repeat:不平铺
         repeat-x:横方向平铺
         repeat-y:纵方向平铺
         repeat:全方向平铺

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lmr廖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值