canves基础自整理(2)

1.画圆/扇形

window.onload=function(){
          var canvas=document.getElementById(‘canvas‘);
            var ctx=canvas.getContext(‘2d‘);
            ctx.moveTo(100,100);
            ctx.arc(100,100,100,0,90*Math.PI/180,false);//属性参数(圆心X坐标,圆心Y坐标,半径,弧长=角度*Math.PI/180,旋转方向:tru逆时针/false顺时针)
            ctx.closePath();
            ctx.stroke();
}

效果如下:

2.[ 案例 ] 时钟

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>钟表</title>
    <script>
        window.onload=function(){
          var canvas=document.getElementById(‘canvas‘);
            var ctx=canvas.getContext(‘2d‘);
            ctx.fillStyle=‘white‘;
            //画刻度
            function drawCircle(x,y,r,deg1,deg2,width){
                ctx.beginPath();
                ctx.moveTo(x,y);
                ctx.arc(x,y,r,deg1*Math.PI/180,deg2*Math.PI/180,false);
                ctx.closePath();
                ctx.lineWidth=width;
                ctx.fill();
            }
            //画刻度
            function drawScale(x,y,r,num,deg,width){
                ctx.beginPath();
                for(var i=0;i<num;i++){
                    ctx.moveTo(x,y);
                    ctx.arc(x,y,r,i*deg*Math.PI/180,(i+1)*deg*Math.PI/180,false);
                }
                ctx.closePath();
                ctx.lineWidth=width;
                ctx.stroke();
            }
            //画钟
            function drawClock(){
                var x=250;
                var y=300;
                var r=100;//时钟半径
                var date=new Date();
                var hour=date.getHours();
                var minute=date.getMinutes();
                var second=date.getSeconds();
                var hourValue=-90+hour*30+minute/12;//时针转动弧长度数(设12点为0度)
                var minuteValue=-90+minute*6;//分针转动弧长度数(设12点为0度)
                var secondValue=-90+second*6;//秒针转动弧长度数(设12点为0度)

                //分针格子
                drawScale(x,y,r,60,6,1);
                //圆盘
                drawCircle(x,y,95,0,360,1);
                //时针格子
                drawScale(x,y,r,12,30,2);
                //盖圆盘
                drawCircle(x,y,90,0,360,1);
                //画时针
                drawCircle(x,y,r*10/20,hourValue,hourValue,2);
                ctx.stroke();
                //画分针
                drawCircle(x,y,r*15/20,minuteValue,minuteValue,1);
                ctx.stroke();
                // //画秒针
                drawCircle(x,y,r*19/20,secondValue,secondValue,0.5);
                ctx.stroke();
            }
            setInterval(drawClock,80);
        }
    </script>
    <style>
        body{
            background: #000;
        }
        *{
            margin:0;
            padding: 0;
            margin:0 auto;
        }
    </style>
</head>
<body>
    <canvas id="canvas" width="500" height="600" style="background:#fff;">
        <span>不支持canvas标签</span>
    </canvas>
</body>
</html>

效果显示: https://happyn6j.github.io/Clock.com/

3.绘制其他曲线:

window.onload=function(){
          var canvas=document.getElementById(‘canvas‘);
            var ctx=canvas.getContext(‘2d‘);
            ctx.moveTo(100,100);
            ctx.arcTo(100,200,200,200,50);//曲线起始点坐标,曲线结束点坐标,切割曲线半径
            ctx.stroke();
        }

效果显示:

贝塞尔曲线(2种):

window.onload=function(){
          var canvas=document.getElementById(‘canvas‘);
            var ctx=canvas.getContext(‘2d‘);
            ctx.moveTo(100,100);//起始点坐标
            ctx.quadraticCurveTo(100,200,200,200);//控制点坐标,结束点坐标         /*ctx.bezierCurveTo(100,200,200,200,200,100);//第一个控制点坐标,第二个控制点坐标,结束点坐标*/
            ctx.stroke();}

4.变换

 window.onload=function(){
          var canvas=document.getElementById(‘canvas‘);
            var ctx=canvas.getContext(‘2d‘);
            ctx.translate(100,100);//偏移,从起始点为基准点,移动到当前坐标
            ctx.rotate(45*Math.PI/180);//旋转(参数为弧度)
            ctx.scale(2,2);//等比缩放
            ctx.fillRect(0,0,100,100);
}

5.[ 案列 ] 转动放大缩小的盒子

 window.onload=function(){
          var canvas=document.getElementById(‘canvas‘);
            var ctx=canvas.getContext(‘2d‘);
            var num=0;
            var temp=1;
            setInterval(function(){
                ctx.save();
                ctx.clearRect(0,0,canvas.width,canvas.height);
                ctx.translate(200,200);
                if(num>50){
                    temp=-1;
                }else if(num<0){
                    temp=1;
                }
                num+=temp;
                ctx.scale(num*1/50,num*1/50);
                ctx.rotate(num*Math.PI/180);
                ctx.translate(-50,-50);
                ctx.fillRect(0,0,100,100);
                ctx.restore();
            },30);}
时间: 2024-12-10 08:01:17

canves基础自整理(2)的相关文章

Java基础知识整理(一)

概述 公司业务需要,产品既要有.NET又需要Java,没得选择,只能业余时间学习Java,整体觉得Java也.NET还是很相似的,只是语法有差别,差别也不是很大,这就将学习Java的基础知识整理下,以便于自己的学习.作为个.NET程序猿也可以学习Java ,毕竟技多不压身,学习多也要精通. 开发工具 eclipse ,开发java类似.NET 需要装JDK类似.NET Framework. Java开发工具eclipse设置 1.设置字体:window设置: 2.设置快捷键:window--ke

linux 基础题整理

基础题: 1.查看系统内核版本号及系统名称 2.查看smb服务所用的端口号 3.禁ping 4.查出22端口现在运行什么程序 5.登录提示符前的输出信息"you are welcome!!!" 6.成功登录后自动输出信息"距离全国比赛还剩1天!!!" 7.确认安全终端为tty1 8.取消普通用户的控制台访问的三个权限:reboot.halt.shutdown 9.只允许组ID为10的成员通过su命令改变为root用户 10.禁止Control-Alt-Delete键

DIV+CSS网页布局常用的一些基础知识整理

CSS命名规范一.文件命名规范 全局样式:global.css:框架布局:layout.css:字体样式:font.css:链接样式:link.css:打印样式:print.css: 二.常用类/ID命名规范页 眉:header内 容:content容 器:container页 脚:footer 版 权:copyright 导 航:menu主导航:mainMenu子导航:subMenu 标 志:logo标 语:banner标 题:title侧边栏:sidebar 图 标:Icon注 释:note

PHP语言基础简单整理

1.开始结束标记<? ... ?> 2.定义变量:$变量名 例: $str="锦清笋";不需要指明数据类型 3.输出语句:(1)echo "hello world!";---echo命令(2)print();输出语句,是函数,有返回值.输出成功返回1,失败返回0.(3) printf();格式化输出字符串.例:printf("%d,%f",12,12.3); (4)sprintf();格式化拼接字符串,不是输出语句,只能将字符串拼接.

Kali Linux渗透基础知识整理(二)漏洞扫描

Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网络上传输的数据量. TCP协议 TCP是因特网中的传输层协议,使用三次握手协议建立连接.当主动方发出SYN连接请求后,等待对方回答SYN+ACK ,并最终对对方的 SYN 执行 ACK 确认.这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议. 连接建立 TC

JAVA基础知识整理

一.首先先明白get与post的基本定义和区别: 这是两种在客户端和服务器端进行请求-响应的方法. 1get:从指定的资源请求数据. 2post:向指定的资源提交要处理的数据. get基本上用于从服务器取回数据,注意:get方法可能返回缓存数据. post可以从服务器上获取数据,不过,post方法不会缓存数据,并且常用语连同请求一起发送数据. 二. Jquery $.get()方法. $.get()方法通过Http Get发起请求,从服务器上请求数据. 语法:&.get(URL,callback

javascript 基础学习整理

1. javascript是动态语言,脚本语言,弱类型语言. 2. javascript代码在html文件中的位置安排,放在<body></body>内部与外部的区别.如何引用外部的javascript文件. 3. javascript单行注释与多行注释. 4. javascript如何申明变量. 5. javascript分支语句的使用. 6. javascript如何弹出警告框.确认框. 7. javascript函数的编写:带参数.带返回值. 8. javascript函数循

一个简单的3D范例,是在别人基础上面整理的。

一个简单的范例,是在别人基础上面整理的.原来的例子,框图太乱了,没有条理感. http://pan.baidu.com/s/1eQTyGCE

perl重点基础知识整理

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86