最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 风骚的 【Canvas (5)】

    正文概述 掘金(璟南)   2021-04-05   550

    风骚的 Canvas

    5.1 canvas中的图片绘制

    API:

    • drawImage(image,x,y):参数分别表示图片对象,图像绘制点左上角对象
    • drawImage(image,x,y,w,h):参数分别表示 图片对象,图像绘制点左上角对象,绘制图片的宽高
    • drawImage(image , sx , sy , sw , sh, dx , dy , dw , dh) :参数sx、sy、sw、sh,表示源图像需要截取的范围。参数sx,表示源图片被截取部分的横坐标。参数sy,表示源图片被截取部分的纵坐标。参数sw,表示源图片被截取部分的宽度。参数sh,表示源图片被截取部分的高度。。

    5.1.1 drawImage(image,x,y)方法绘制

        <body>
             <canvas id="canvas" width="500" height="500" style="border: 1px solid red;"></canvas>
             <script>
                     window.onload = function () {
                         /** @type {HTMLCanvasElement} */ 
                        var canvas = document.getElementById('canvas')
                        var ctx = canvas.getContext('2d')
    
                        var image = new Image()
                        image.src = './images/header.jpg'
    
                        ctx.drawImage(image,0,0)
                    }
                 }
             </script>
        </body>
    

    浏览器中的预览效果

    风骚的 【Canvas (5)】

    5.1.2 drawImage(image,x,y,w,h)方法绘制

        <body>
             <canvas id="canvas" width="500" height="500" style="border: 1px solid red;"></canvas>
             <script>
                     window.onload = function () {
                         /** @type {HTMLCanvasElement} */ 
                        var canvas = document.getElementById('canvas')
                        var ctx = canvas.getContext('2d')
    
                        var image = new Image()
                        image.src = './images/header.jpg'
    
                        ctx.drawImage(image,0,0,200,200)
                    }
                 }
             </script>
        </body>
    

    浏览器中的预览效果

    风骚的 【Canvas (5)】

    下面我们使用第三种方式,从源图像中去一部分下来绘制到画板中

    5.1.3 drawImage(image , sx , sy , sw , sh, dx , dy , dw , dh) 绘制

        <body>
             <canvas id="canvas" width="500" height="500" style="border: 1px solid red;"></canvas>
             <script>
                     window.onload = function () {
                         /** @type {HTMLCanvasElement} */ 
                        var canvas = document.getElementById('canvas')
                        var ctx = canvas.getContext('2d')
    
                        var image = new Image()
                        image.src = './images/header.jpg'
    
                        ctx.drawImage(image,0,0,200,200) //源图像
                        ctx.drawImage(image,40,40,200,200,220,220,200,200) //从源图像中选取出来的部分
                    }
                 }
             </script>
        </body>
    

    浏览器中预览效果

    风骚的 【Canvas (5)】

    5.2 canvas 平铺属性

    API: -createPattern(image,type)参数image表示被平铺的对象可以是image或者canvas,参数type表示图像平铺的方式。参数type有四种取值,即no-repeat、repeat-x、repeat-y、repeat,

    5.2.1 平铺图片

       <body>
            <canvas id="canvas" width="500" height="500" style="border: 1px solid red;"></canvas>
            <script>
                    window.onload = function () {
                        /** @type {HTMLCanvasElement} */ 
                       var canvas = document.getElementById('canvas')
                       var ctx = canvas.getContext('2d')
    
                      var image2 = new Image()
                       image2.src = './images/fu.jpg'
                       
                       
                       //对于图片的操作要在图片加载完闭在进行操作,否则没有效果
                       image2.onload = function () {
                           
                           var pattern1 = ctx2.createPattern(image2, 'repeat-x')
                           ctx2.fillStyle = pattern1
                           ctx2.fillRect(0, 220,200,200)
                       }
                }
            </script>
       </body>
    

    浏览器中预览效果

    风骚的 【Canvas (5)】

    5.2.2 平铺canvas

       <body>
            <canvas id="canvas" width="500" height="500" style="border: 1px solid red;"></canvas>
            <script>
                    window.onload = function () {
                        /** @type {HTMLCanvasElement} */ 
                       var canvas = document.getElementById('canvas')
                       var ctx = canvas.getContext('2d')
    
                       //创建一个canvas对象
                       var myCanvas = document.createElement('canvas')
                       myCanvas.width = 20,
                           myCanvas.height = 20
                       var myctx = myCanvas.getContext('2d')
    
                       myctx.beginPath()
                       myctx.arc(10, 10, 10, 0, 360 * Math.PI / 180, true)
                       myctx.closePath()
                       myctx.fillStyle = "skyblue"
                       myctx.fill()
    
                       var pattern = ctx2.createPattern(myCanvas, 'repeat-x')
                       ctx2.fillStyle = pattern
                       ctx2.fillRect(0, 0, 200, 200)
                }
            </script>
       </body>
    

    浏览器中预览

    风骚的 【Canvas (5)】

    浏览器中的预览效果

    风骚的 【Canvas (5)】

    浏览器中预览效果

    风骚的 【Canvas (5)】

    5.3 图片切割 clip方法

    API:

    • clip() 创建切割区域

    浏览器中预览效果

       <body>
            <canvas id="canvas" width="500" height="500" style="border: 1px solid red;"></canvas>
            <script>
                    window.onload = function () {
                        /** @type {HTMLCanvasElement} */ 
                       var canvas = document.getElementById('canvas')
                       var ctx3 = canvas.getContext('2d')
    
                       //创建一个canvas对象
                      var image2 = new Image()
                       image2.src = './images/header.jpg'
    
                       ctx3.beginPath()
                       ctx3.arc(70,70,50,0,360*Math.PI,true)
                       ctx3.closePath()
    
                       ctx3.clip()
    
                       image2.onload = function () {   
                           ctx3.drawImage(image,0,0)
                       }
                }
            </script>
       </body>
    

    风骚的 【Canvas (5)】


    起源地下载网 » 风骚的 【Canvas (5)】

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元