canvas-文字,图片裁剪及动画实例

知识点(了解)

路径比较复杂,如何填充

内容

文字方法

  • strokeText(text, x, y) 描边写字
  • fillText(text, x, y) 填充写字
  • measureText(text) 返回对象 包换文本的宽度
  • font 属性 设置 大小、字体 如 cxt.fon="100px MicrosoftYaHei";
  • textAlign 属性 水平对齐方式 start(默认)/end/center/left/right
  • textBaseline 属性 垂直对齐方式 alphabetic(默认)/top/bottom/middke/hanging/ideographic

绘制图片(插入图片)

插入图片

drawImage(img, x, y)

  • img image的dom元素
  • x,y 插入到 画布的位置 坐标

插入图片并改变大小

drawImage(img, x, y, width, height)

插入裁剪后的图片

drawImage(img, sx,sy,swidth,sheight, x, y, width, height)

  • sx/sy: 图片上开始裁剪的位置
  • swidth/sheight : 裁剪图片的大小

阴影

  • shadowColor 阴影颜色
  • shadowBlur 阴影的模糊值
  • shadowOffsetX 阴影的左偏移量
  • shadowOffsetY 阴影的右偏移量

渐变

线性渐变

var grd = cxt.createLinearGradien(x, y, x1, y1);

grd.addColorStop(位置, color)

动画实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <canvas id="mycanvas">
        
    </canvas>
    <script type="text/javascript">
        var canvas = document.getElementById("mycanvas");
        canvas.width = 500;
        canvas.height = 500;
        canvas.style.border = "1px solid #ccc";
        // 开启
        var cxt = canvas.getContext("2d");
        //获取图片
        var img =document.createElement("img");
        img.src = "./1.png";
        //图片显示位置声明(用于移动)
        var xx =150;
        var yy =150;
        var dirIndex = 0;
        img.onload= function(){
            var frameIndex = 0;
            //裁剪和清空图片使画布出现图片替换
            setInterval(function(){
                cxt.clearRect(0,0,canvas.width,canvas.height);
                cxt.drawImage(img,frameIndex*50,dirIndex*65,50,65,xx,yy,50,65);
                frameIndex ++;
                //循环裁剪图片
                if(frameIndex > 3){
                    frameIndex = 0;
                }
            },100);
        }
        document.onkeydown=function(e){
            switch(e.keyCode){
                //增加X或者Y轴移动的距离
                case 37: dirIndex=1,
                
                    xx-=5;
                break;

                case 38: dirIndex=3,
                    yy-=5;
                break;

                case 39: dirIndex=2,
                    xx+=5;
                break;

                case 40: dirIndex=0,
                    yy+=5;
                break;
            }
        }
        
    </script>
</body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容