【HTML】canvas学习小结

1. 绘制基本图形

1.1 绘制线

canvas.getContext(‘2d‘) 获取上下文

ctx.beginPath()  开始绘制新路径

ctx.closePath()  结束当前路径

ctx.save()  保存当前上下文

ctx.restore()  恢复至上次保存的上下文

ctx.moveTo(x,y)  移动绘制点至x,y

ctx.lineTo(x,y)  从当前点绘制到x,y的线

ctx.lineWidth  设置线的宽度

ctx.strokeStyle  设置线的颜色

ctx.fill()  填充图形

ctx.stroke()  绘制图形,一般填充在绘制前面,避免填充遮挡宽度



var canvas = document.getElementById(‘myCanvas‘);

if (canvas.getContext) {
    var ctx = canvas.getContext(‘2d‘);
}

ctx.beginPath(); // 开始路径绘制
ctx.moveTo(20, 20); // 设置路径起点,坐标为(20,20)
ctx.lineTo(200, 20); // 绘制一条到(200,20)的直线
ctx.lineWidth = 1.0; // 设置线宽
ctx.strokeStyle = "#CC0000"; // 设置线的颜色
ctx.stroke(); // 绘制矩形

1.2 绘制矩形

ctx.fillRect(x1, y1, x2, y2);  绘制左上角坐标x1,y1 右下角坐标x2,y2的矩形

ctx.fillStyle  矩形填充颜色

  

var canvas = document.getElementById(‘myCanvas‘);

if (canvas.getContext) {
    var ctx = canvas.getContext(‘2d‘);
}

ctx.fillStyle = ‘yellow‘;//设置实心颜色
ctx.fillRect(50, 50, 200, 100);//绘制实心矩形
ctx.fill();//填充矩形ctx.stroke();//绘制矩形
ctx.strokeRect(10,10,200,100);//绘制空心矩形 ctx.clearRect(100,50,50,50);//清除某个矩形区域的内容

1.3 绘制圆形&扇形

ctx.arc(x, y, radius, startAngle, endAngle, anticlockwise);  x和y参数是圆心坐标,radius是半径,

                                startAngle和endAngle则是扇形的起始角度和终止角度(以弧度表示),

                                anticlockwise表示做图时应该逆时针画(true)还是顺时针画(false)

var canvas = document.getElementById(‘myCanvas‘);

if (canvas.getContext) {
    var ctx = canvas.getContext(‘2d‘);
}

//实心圆
ctx.beginPath();
ctx.arc(60, 60, 50, 0, Math.PI*2, true);
ctx.fillStyle = "#000000";
ctx.fill();
ctx.stroke();

//空心圆
ctx.beginPath();
ctx.arc(60, 60, 50, 0, Math.PI*2, true);
ctx.lineWidth = 1.0;
ctx.strokeStyle = "#000";
ctx.stroke();

1.4 绘制五角星

1.5 绘制渐变色

createLinearGradient(x1,y1,x2,y2)  绘制从x1,y1起始,x2,y2终止的线性渐变,例如(0,0,0,100)从上至下的线性渐变,(0,0,100,0)从左至右

var canvas = document.getElementById(‘myCanvas‘);

if (canvas.getContext) {
    var ctx = canvas.getContext(‘2d‘);
}

var myGradient = ctx.createLinearGradient(0, 0, 0, 160); //从上至下的线性渐变

myGradient.addColorStop(0, "#BABABA");
myGradient.addColorStop(1, "#636363");

ctx.fillStyle = myGradient;
ctx.fillRect(10,10,200,100);

1.6 阴影

var canvas = document.getElementById(‘myCanvas‘);

if (canvas.getContext) {
    var ctx = canvas.getContext(‘2d‘);
}
ctx.shadowOffsetX = 10; // 设置水平位移
ctx.shadowOffsetY = 10; // 设置垂直位移
ctx.shadowBlur = 5; // 设置模糊度
ctx.shadowColor = "rgba(0,0,0,0.5)"; // 设置阴影颜色

ctx.fillStyle = "#CC0000";
ctx.fillRect(10,10,200,100);

1.7 绘制文本

var canvas = document.getElementById(‘myCanvas‘);

if (canvas.getContext) {
    var ctx = canvas.getContext(‘2d‘);
}

ctx.font = "Bold 20px Arial"; // 设置字体
ctx.textAlign = "left";// 设置对齐方式
ctx.fillStyle = "#008600"; // 设置填充颜色
ctx.fillText("Hello!", 10, 50); // 设置字体内容,以及在画布上的位置
ctx.strokeText("Hello!", 10, 100);// 绘制空心字
时间: 2024-12-16 11:53:16

【HTML】canvas学习小结的相关文章

HTML5学习小结

HTML5是用于取代1999年所制定的 HTML4.01和XHTML1.0标准的HTML标准版本.HTML5的第一份正式草案已于2008年1月公布:2012年12月,规范已经正式定稿.W3C计划在2014年底发布HTML5推荐标准,在2016年底发布HTML5.1推荐标准.HTML5有两大特点:强化了Web网页的表现性能:追加了本地数据库等功能. HTML5向前兼容,只去除很少的部分,比如<frame><font>等.HTML5面向移动,支持IP,GPS,WIFI MAC,GSM/

git学习小结

背景:最近因为工作原因,需要将以前的代码库由bitbucket重新布置在一台服务器上,所以就学习了下git,特此记录下 在167这台机器上搭建apache,用做git server,由于以前apache都已经搭好了,所以这里只配置git server 就可以了,此处贴出配置: 服务器搭好了,来到配置中的root目录,git clone https://[email protected]/XXXX 此时,库和服务器都搭好了,用于新库测试的机器也可以从git server上克隆库了,来,我们来试试从

网络编程学习小结

几种网络编程方式: ISAPI.CGI.WinInet.Winsock 它们之间的差别: 1)  ISAPI主要是开发基于浏览器client与server端程序.效率比CGI方式高,并且也扩展了CGI没有的一些功能.(基于TCP/IP模型中的应用层) 2)  CGI主要是开发基于浏览器client与server端程序.(基于TCP/IP模型中的应用层) 3)  WinInet主要是开发client程序.(基于TCP/IP模型中的应用层) 4)  Winsock主要是基于socket来开发clie

html5 canvas 学习笔记(一)

一.canvas元素API canvas元素并未提供很多API,实际上他只提供了两个属性与三个方法: 1.canvas元素属性 width 属性:与 height 属性: canvas元素绘图表面的宽度,在默认状况下,浏览器会将canvas元素大小设定成与绘图表面大小一致,然而如果在css中覆写了元素大小,那么浏览器则会将绘图表面进行缩放,使之符合元素尺寸.其值为非负整数,默认值为300. 2.canvas元素方法 getContext()方法: 返回与该canvas元素相关的绘图环境对象,每个

MogileFS学习小结

大纲: 一.关于MogileFS 二.常见分布式文件系统 三.MogileFS基本原理 四.MogileFS的实现 一.关于MogileFS 当下我们处在一个互联网飞速发展的信息社会,在海量并发连接的驱动下每天所产生的数据量必然以几何方式增长,随着信息连接方式日益多样化,数据存储的结构也随着发生了变化.在这样的压力下使得人们不得不重新审视大量数据的存储所带来的挑战,例如:数据采集.数据存储.数据搜索.数据共享.数据传输.数据分析.数据可视化等一系列问题. 传统存储在面对海量数据存储表现出的力不从

201671010130 2016-2017-2 《Java程序设计》第四周学习小结

第四周学习小结 本次实验巩固了上次实验分隔数并求和的题,目前这个题有两种做法,一种是不断对数10求余,余数保存在sum中,然后左移一位,直到余数为零.另一种就是将数字强制转换成一个字符串数组String s=String.valueOf(num),根据方法s.toCharArray()将字符分离出来,据"x"-"0"=x,unicode码值相减即可得x的值. 父类和子类能够看两个交集,super关键字是否能够看做一个子类和超类的接口呢? 在子类中可以增加域.增加方法

初识ASP.NET---点滴的积累---ASP.NET学习小结

差不多十多天前学习完了北大青鸟的学习视频,没想到没几天的时间就看完了XML视频和牛腩的Javascript视频.学习完了也该总结总结,理理自己的思路,消化一下自己学习到的东西. 视频中的理论知识并不是很多,以例子驱动学起来也不会他过于乏味.全部的学习内容大概的可以用下图表示. 个人感觉这套视频的体系感不是很强,每一集之间老师的串联并不是做得很好,向我等没有教材的有些小的知识无从知晓.但是不能不说这套视频确很适合初学者学习,老师讲解的也不错,从此我也算是入门. 当然要想进一步的了解ASP.NET并

8086汇编学习小结———实时更新

初学IBM-PC 8086,对INT指令不是很理解.现从网上总计如下: 表:DOS系统功能调INT 21H AH 功能 调用参数 返回参数 00 程序终止(同INT 20H) CS=程序段前缀 01 键盘输入并回显 AL=输入字符 02 显示输出 DL=输出字符 03 异步通迅输入 AL=输入数据 04 异步通迅输出 DL=输出数据 05 打印机输出 DL=输出字符 06 直接控制台I/O DL=FF(输入)DL=字符(输出) AL=输入字符 07 键盘输入(无回显) AL=输入字符 08 键盘

《Pro AngularJS》学习小结-01

<Pro AngularJS>该书以一个SportsStore案例为主线铺开. 一.开发环境设置 该书中所用的server开发环境是Deployed,从来没听说过,而且作者也说该server没什么人用,我干脆弃用之.其他的环境包括 NodeJS--这个必须装 karma--测试环境,前期还没有用到,以后认真研究,毕竟AngularJS一大特点是Unit Test bootstrap--这个现在应该普遍使用了,O(∩_∩)O webstorm--现在唯一支持AngularJS插件的IDE 我基本