Canvas 画九宫格图片

在做微信小游戏的时候,需要在开放域绘制页面,而且不是固定大小的底,这就不得不,用九宫格绘制页面底了

1. 原理:

        就不多说了

2. 代码

//代码可以复制到w3 这里去测试
//https://www.w3school.com.cn/tiy/t.asp?f=eg_html5_canvas_image    


    var canvas = document.getElementById("myCanvas");
    var ctx = canvas.getContext("2d");
    var img = document.getElementById("scream");
    
    var rect = {
    	x:45,
        y:50,
        width:220,
        height:124,
    
    }
    
    var imgeSize = {
    	width:300,
        height :227
    }
    
    
    
    var target ={
    	x : 10,
        y:10,
    	width:700,
        height:500
    
    }

    function draw(imageSize,rect, target){

        var sp13X = rect.x + rect.width;
        var sw34 = imageSize.width - sp13X;
        
    
        var sp31Y = rect.y + rect.height;
        var sh34 = imageSize.height - sp31Y;
    
    
    
        var dp13X = target.x+target.width - sw34
        var dp31Y = target.y+target.height - sh34
    
        var dp22X = target.x+ rect.x
        var dp22Y = target.y+ rect.y
    
        var dw23 = dp13X - dp22X
        var dh23 = dp31Y - dp22Y
        
    
    
         //角1
    ctx.drawImage(img, 0, 0, rect.x, rect.y, target.x, target.y, rect.x, rect.y);
    
    
    //角2
     ctx.drawImage(img, sp13X, 0, sw34, rect.y, dp13X, target.y, sw34, rect.y);
    
    
    

    //角3
    ctx.drawImage(img, 0, sp31Y, rect.x, sh34, target.x, dp31Y, rect.x, sh34);
    
   
  
    //角4
    ctx.drawImage(img, sp13X, sp31Y, sw34, sh34, dp13X, dp31Y, sw34, sh34);
    
    
    //中
     ctx.drawImage(img, rect.x, rect.y, rect.width, rect.height, dp22X, dp22Y, dw23, dh23);
     
     //中12
    ctx.drawImage(img, rect.x, 0, rect.width, rect.y, dp22X, target.y, dw23, rect.y);
    
    
    
    //中21
    ctx.drawImage(img, 0, rect.y, rect.x, rect.height, target.x, dp22Y, rect.x, dh23);
    
    //中23
    ctx.drawImage(img, sp13X, rect.y, sw34, rect.height, dp13X, dp22Y, sw34, dh23);
    
     //中32
     ctx.drawImage(img, rect.x, sp31Y, rect.width, sh34, dp22X, dp31Y, dw23, sh34);
    
    

    }

   

    draw(imgeSize,rect,target)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Canvas板中插入多张图片,可以使用以下步骤: 1. 创建多个Image对象,使用JavaScript代码创建多个Image对象,可以通过new Image()来创建。 2. 加载图片,使用Image对象的src属性来设置图片的路径,然后监听load事件来确保图片已经加载完成。 3. 在Canvas上绘制图片,使用Canvas上下文对象的drawImage()方法来在Canvas上绘制图片,可以指定图片的位置和大小。 以下是代码示例: ```html <canvas id="canvas" width="500" height="500"></canvas> <script> var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); var img1 = new Image(); img1.src = 'image1.jpg'; var img2 = new Image(); img2.src = 'image2.jpg'; var img3 = new Image(); img3.src = 'image3.jpg'; var loadedImages = 0; var totalImages = 3; img1.onload = function() { loadedImages++; if (loadedImages === totalImages) { draw(); } } img2.onload = function() { loadedImages++; if (loadedImages === totalImages) { draw(); } } img3.onload = function() { loadedImages++; if (loadedImages === totalImages) { draw(); } } function draw() { ctx.drawImage(img1, 0, 0, canvas.width, canvas.height); ctx.drawImage(img2, 100, 100, 200, 200); ctx.drawImage(img3, 300, 300, 100, 100); } </script> ``` 在上面的示例中,我们首先创建了一个Canvas元素和一个Canvas上下文对象,然后创建了多个Image对象并设置了图片路径,接着监听每个图片的load事件,每次图片加载完成后,将loadedImages加1,当所有图片都加载完成后,调用draw()函数,在函数中使用drawImage()方法在Canvas上绘制多张图片

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值