【重点突破】——使用Canvas进行绘图图像

摘要:
varctx=c7.getContext;varp3=newImage();p3.src='http://t.zoukankan.com/image/p3.png';控制台日志;P3.onload=function(){varx=0;vary=0;//在画布c7上方侦听鼠标移动事件。onmousemove=function{x=e.offsetX;y=e.offsetY;}//使用计时器,不断清除画布,并重新绘制飞机//小孔:飞机的锚点位于左上角。要更改锚点的距离,请更改重新绘制的x.ysetInterval;}V。画布画出一个围绕自己旋转的小平面围绕指定点的轴旋转的小型飞机body{text-align:center;}canvas{background:#f0f0;}您的浏览器不支持画布标签!

一、引言

本文主要是canvas绘图中绘制图像的部分,做了几个练习,综合起来,复习canvas绘图以及定时器的使用。

二、canvas绘制小飞机在指定位置

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>小飞机静止位于上下左右中</title>
    <style>
        body{
            text-align:center;
        }
        canvas{
            background:#f0f0f0;
        }
    </style>
</head>
<body>
    <canvas id="c7" width="500" height="400">
        您的浏览器不支持canvas标签!
    </canvas>
    <script>
        var ctx = c7.getContext('2d');

        var p2 = new Image();
        p2.src = 'image/p2.png';
        console.log(p2.width);
        p2.onload = function(){
            ctx.drawImage(p2,0,0);
            ctx.drawImage(p2,500-p2.width,0);
            ctx.drawImage(p2,0,400-p2.height);
            ctx.drawImage(p2,500-p2.width,400-p2.height);
            ctx.drawImage(p2,250-200,200-100,400,200);
        }
    </script>
</body>
</html>

实现效果:

【重点突破】——使用Canvas进行绘图图像第1张

三、canvas绘制小飞机左右自动移动

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>左右移动的小飞机</title>
    <style>
        body{
            text-align:center;
        }
        canvas{
            background:#f0f0f0;
        }
    </style>
</head>
<body>
<canvas id="c7" width="500" height="400">
    您的浏览器不支持canvas标签!
</canvas>
<script>
    var ctx = c7.getContext('2d');

    var p3 = new Image();
    p3.src = 'image/p3.png';
    console.log(p3.width);
    p3.onload = function(){
        var x = 0;
        var xDirection = 1;
        var y = 0;
        setInterval(function(){
            //清除画布上已有的内容
            ctx.clearRect(0,0,500,400);

            ctx.drawImage(p3,x,y);
            x += 5*xDirection;

            if(x>=500-p3.width){
                xDirection = -1;
            }
            if(x<0){
                xDirection = 1;
            }
        },30);
    }
</script>
</body>
</html>

  【重点突破】——使用Canvas进行绘图图像第2张

 四、canvas绘制随鼠标移动的小飞机

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>随鼠标移动的小飞机</title>
    <style>
        body{
            text-align:center;
        }
        canvas{
            background:#f0f0f0;
        }
    </style>
</head>
<body>
<canvas id="c7" width="500" height="400">
    您的浏览器不支持canvas标签!
</canvas>
<script>
    var ctx = c7.getContext('2d');

    var p3 = new Image();
    p3.src = 'image/p3.png';
    console.log(p3.width);
    p3.onload = function(){
        var x = 0;
        var y = 0;
        //监听鼠标在画布上方移动事件
        c7.onmousemove= function(e){
           x = e.offsetX;
           y = e.offsetY;
        };

        //使用定时器,不停的清画布,重绘飞机
        //小坑:飞机的定位点是左上角,要改变定位点距离,改变重绘的x.y
        setInterval(function(){
            ctx.clearRect(0,0,500,400);
            ctx.drawImage(p3,x-p3.width/2,y-p3.height/2);
        },20);
       
    }
</script>
</body>
</html>

【重点突破】——使用Canvas进行绘图图像第3张

五、canvas绘制以自己为中心旋转的小飞机

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>以指定点为轴中心旋转的小飞机</title>
    <style>
        body{
            text-align:center;
        }
        canvas{
            background:#f0f0f0;
        }
    </style>
</head>
<body>
<canvas id="c7" width="500" height="400">
    您的浏览器不支持canvas标签!
</canvas>
<script>
    var ctx = c7.getContext('2d');

    var p2 = new Image();
    p2.src = 'image/p2.png';
    console.log(p2.width);
    p2.onload = function(){
        var deg1 = 10;
        var deg2 = 20;

        setInterval(function(){
          //绘制飞机1——绕自己为中心旋转
          //平移+旋转+绘制+逆向旋转+逆向平移
            ctx.translate(100,50);
            ctx.rotate(deg1*Math.PI/180);
            ctx.drawImage(p2,-100,-50);
            ctx.rotate(-deg1*Math.PI/180);
            ctx.translate(-100,-50);

            deg1 += 10;

          //绘制飞机2——不旋转
            ctx.drawImage(p2,500-200,0);


          //绘制飞机3——绕自己为中心选转,速度是飞机1的2倍
            ctx.translate(100,350);
            ctx.rotate(deg2*Math.PI/180);
            ctx.drawImage(p2,-100,-50);
            ctx.rotate(-deg2*Math.PI/180);
            ctx.translate(-100,-350);

            deg2 += 20;
        },50)
    }
</script>
</body>
</html>

 更简单的方法:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>以指定点为轴中心旋转的小飞机</title>
    <style>
        body{
            text-align:center;
        }
        canvas{
            background:#f0f0f0;
        }
    </style>
</head>
<body>
<canvas id="c7" width="500" height="400">
    您的浏览器不支持canvas标签!
</canvas>
<script>
    var ctx = c7.getContext('2d');

    var p2 = new Image();
    p2.src = 'image/p2.png';
    console.log(p2.width);
    p2.onload = function(){
        var deg1 = 10;
        var deg2 = 20;

        setInterval(function(){
          //绘制飞机1——绕自己为中心旋转
          //存盘+平移+旋转+绘制+恢复存盘
            ctx.save(); 
            ctx.translate(100,50);
            ctx.rotate(deg1*Math.PI/180);
            ctx.drawImage(p2,-100,-50);
            ctx.restore();

            deg1 += 10;

          //绘制飞机2——不旋转
            ctx.drawImage(p2,500-200,0);


          //绘制飞机3——绕自己为中心选转,速度是飞机1的2倍
            ctx.save(); 
            ctx.translate(100,350);
            ctx.rotate(deg2*Math.PI/180);
            ctx.drawImage(p2,-100,-50);
            ctx.restore();

            deg2 += 20;
        },50)
    }
</script>
</body>
</html>

【重点突破】——使用Canvas进行绘图图像第4张


 注:转载请注明出处

免责声明:文章转载自《【重点突破】——使用Canvas进行绘图图像》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇学习openstack(六)SpringCloud框架:Nacos注册中心下载安装下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

TAB页制作

tab标签画布和fixed画布的应用 加标签画布,继承子类信息 tab画布添加标签,按照需求添加 设置标签的子类信息 创建与标签同名的堆叠画布,有几个标签建几个画布,继承子类信息 数据块的项分别显示在不同的画布上 每个画布里的内容设置位置,不同画布被切割大小要相同(美观),项的起始位置也要相同,效果如下 tab画布,fixed画布与...

WPF在圆上画出刻度线

思路 我们可以使用Ellipse先画出一个圆当背景,然后用Canvas再叠加画上刻度线,就能得到如下的效果 我们先用Ellipse画一个橙色的圆,然后将Canvas的宽度和高度绑定到Ellipse的宽度和高度 <Grid> <Ellipse Fill="Orange" Width="400" Height="400" N...

canvas动画—圆形扩散、运动轨迹

介绍 在ECharts中看到过这种圆形扩散效果,类似css3,刚好项目中想把它用上,but我又不想引入整个echart.js文件,更重要的是想弄明白它的原理,所以自己动手。在这篇文章中我们就来分析实现这种效果的两种方法,先上效果图: 实现原理 通过不断的改变圆的半径大小,不断重叠达到运动的效果,在运动的过程中,设置当前canvas的透明度context....

canvas基础—图形变换

1、canvas转换方法 1.1canvas转换方法 二、canvas实现图形的中心点旋转 step1:获取canva元素并指定canvas的绘图环境 var canvas=document.getElementById('canvas'); var context=canvas.getContext('2d'); step2:在画布(1...

android绘图—Paint path 旋转

http://meteor6789.blog.163.com/blog/static/35040733201111193535153/ Piant 看一段代码: mPaint = new Paint();mPaint.setAntiAlias(true);//锯齿mPaint.setDither(true);//mPaint.setColor(0xFF3...

canvas画图标签的使用

<canvas height='500'>你的浏览器不支持</canvas> //创建一个画布 js: var c=document.getElementById('can')  //获取节点var canvas=c.getContext("2d");      //使用2D引擎canvas.fillStyle="rgba(0,0,...