canvas学习笔记一
为了研究pixi库,就顺带从头到位学习下canvas吧
判断支持力度
var webgl = (function() {
try {
var canvas = document.createElement('canvas');
return !!window.WebGLRenderingContext && (canvas.getContext('webgl') || canvas.getContext('experimental-webgl'));
} catch (e) {
return false;
}
})();
getContext方法指定参数2d,表示该canvas对象用于生成2D图案(即平面图案)。如果参数是3d,就表示用于生成3D图像(即立体图案),这部分实际上单独叫做WebGL API
绘制路径
- beginPath方法表示开始绘制路径
- moveTo(x, y)方法设置线段的起点
- lineTo(x, y)方法设置线段的终点
- stroke方法用来给透明的线段着色
//////////
//绘制路径 //
//////////
context.beginPath()
context.moveTo(20, 20)
context.lineTo(30, 30)
context.moveTo(100, 150)
context.lineTo(150, 200)
context.lineWidth = 2
context.strokeStyle = "red"
context.stroke()
绘制矩形
- fillRect(x, y, width, height)方法用来绘制矩形,它的四个参数分别为矩形左上角顶点的x坐标、y坐标,以及矩形的宽和高。fillStyle属性用来设置矩形的填充色
- strokeRect方法与fillRect类似,用来绘制空心矩形
- clearRect方法用来清除某个矩形区域的内容
//////////
//绘制路径 //
//////////
context.beginPath()
context.moveTo(20, 20)
context.lineTo(30, 30)
context.moveTo(100, 150)
context.lineTo(150, 200)
context.lineWidth = 2
context.strokeStyle = "red"
context.stroke()
绘制文本
- fillText(string, x, y) 用来绘制文本,它的三个参数分别为文本内容、起点的x坐标、y坐标。使用之前,需用font设置字体、大小、样式(写法类似与CSS的font属性)。与此类似的还有strokeText方法,用来添加空心字
- fillText方法不支持文本断行,即所有文本出现在一行内。所以,如果要生成多行文本,只有调用多次fillText方法。
//////////
//绘制路径 //
//////////
context.beginPath()
context.moveTo(20, 20)
context.lineTo(30, 30)
context.moveTo(100, 150)
context.lineTo(150, 200)
context.lineWidth = 2
context.strokeStyle = "red"
context.stroke()
绘制圆形和扇形
arc方法用来绘制扇形
ctx.arc(x, y, radius, startAngle, endAngle, anticlockwise);
arc方法
- x和y参数是圆心坐标
- radius是半径
- startAngle和endAngle则是扇形的起始角度和终止角度(以弧度表示)
- anticlockwise表示做图时应该逆时针画(true)还是顺时针画(false)
//////////
//绘制路径 //
//////////
context.beginPath()
context.moveTo(20, 20)
context.lineTo(30, 30)
context.moveTo(100, 150)
context.lineTo(150, 200)
context.lineWidth = 2
context.strokeStyle = "red"
context.stroke()
设置渐变色
createLinearGradient方法用来设置渐变色。
createLinearGradient方法的参数是(x1, y1, x2, y2),其中x1和y1是起点坐标,x2和y2是终点坐标。通过不同的坐标值,可以生成从上至下、从左到右的渐变等等。
/////////
//渐变色 //
/////////
var myGradient = context.createLinearGradient(0, 0, 0, 60);
myGradient.addColorStop(0, "#BABABA");
myGradient.addColorStop(1, "#636363");
context.fillStyle = myGradient;
context.fillRect(10,250,200,100);
设置阴影
/////////
//渐变色 //
/////////
var myGradient = context.createLinearGradient(0, 0, 0, 60);
myGradient.addColorStop(0, "#BABABA");
myGradient.addColorStop(1, "#636363");
context.fillStyle = myGradient;
context.fillRect(10,250,200,100);
<!doctype html><script type="text/javascript"> var mycanvas = document.getElementById("myCanvasTag"); var context = mycanvas.getContext('2d'); ////////// //绘制路径 // ////////// context.beginPath() context.moveTo(20, 20) context.lineTo(30, 30) context.moveTo(100, 150) context.lineTo(150, 200) context.lineWidth = 2 context.strokeStyle = "red" context.stroke() ///////// //绘制矩形 // ///////// context.fillStyle = "red" context.fillRect(250,250,50,50) //空心圆 context.strokeRect(10,10,200,100); //清除矩形 context.clearRect(250,250,20,20) ///////// //绘制文本 // ///////// // 设置字体 context.font = "Bold 20px Arial"; // 设置对齐方式 context.textAlign = "left"; // 设置填充颜色 context.fillStyle = "#008600"; // 设置字体内容,以及在画布上的位置 context.fillText("Hello!", 10, 50); // 绘制空心字 context.strokeText("Hello!", 10, 100); ////////////// //绘制圆形和扇形 // ////////////// ///绘制实心 context.beginPath(); context.arc(300, 150, 50, 0, Math.PI*2, true); context.fillStyle = "#000000"; context.fill(); //绘制空心圆形 context.beginPath(); context.arc(60, 60, 50, 0, Math.PI*2, true); context.lineWidth = 1.0; context.strokeStyle = "#000"; context.stroke(); ///////// //渐变色 // ///////// var myGradient = context.createLinearGradient(0, 0, 0, 60); myGradient.addColorStop(0, "#BABABA"); myGradient.addColorStop(1, "#636363"); context.fillStyle = myGradient; context.fillRect(10,250,200,100); //阴影 context.shadowOffsetX = 10; // 设置水平位移 context.shadowOffsetY = 10; // 设置垂直位移 context.shadowBlur = 5; // 设置模糊度 context.shadowColor = "rgba(0,0,0,0.5)"; // 设置阴影颜色 context.fillStyle = "#CC0000"; context.fillRect(250, 350, 100, 30); </script>
canvas学习笔记一的更多相关文章
- canvas学习笔记、小函数整理
http://bbs.csdn.net/topics/391493648 canvas实例分享 2016-3-16 http://bbs.csdn.net/topics/390582151 html5 ...
- canvas学习笔记,实用知识点总结(上)
本博客是本人日常学习笔记,作为重要知识点的总结记录,随笔风格可能更倾向于个人的学习习惯和方式,若对您有帮助十分荣幸,若存在问题欢迎互相学习探讨,前端小白一枚在此恭候. 一.基本使用规则 1.创建画布 ...
- canvas学习笔记(下篇) -- canvas入门教程--保存状态/变形/旋转/缩放/矩阵变换/综合案例(星空/时钟/小球)
[下篇] -- 建议学习时间4小时 课程共(上中下)三篇 此笔记是我初次接触canvas的时候的学习笔记,这次特意整理为博客供大家入门学习,几乎涵盖了canvas所有的基础知识,并且有众多练习案例, ...
- canvas学习笔记(中篇) -- canvas入门教程-- 颜色/透明度/渐变色/线宽/线条样式/虚线/文本/阴影/图片/像素处理
[中篇] -- 建议学习时间4小时 课程共(上中下)三篇 此笔记是我初次接触canvas的时候的学习笔记,这次特意整理为博客供大家入门学习,几乎涵盖了canvas所有的基础知识,并且有众多练习案例, ...
- canvas学习笔记(上篇)-- canvas入门教程 -- canvas标签/方块/描边/路径/圆形/曲线
[上篇] -- 建议学习时间4小时 课程共(上中下)三篇 此笔记是我初次接触canvas的时候的学习笔记,这次特意整理为博客供大家入门学习,几乎涵盖了canvas所有的基础知识,并且有众多练习案例, ...
- canvas学习笔记:canvas对图片的像素级处理--ImageData的应用
学习了canvas的基本绘图功能后,惊喜的发现canvas对图片数据也有相当强大的处理功能,能够从像素级别操作位图,当然[lte ie8]不支持. 主要的函数有三个: ctx.createImageD ...
- canvas学习笔记(一)-认识canvas
canvas是html5新增的一个标签,主要用于图形的绘制.我们可以把它理解为是浏览器给我们提供了一个画板,至于要绘制怎样的画卷,就看神笔马良你的主意了.而在canvas上绘制图形使用的笔,就是js了 ...
- 【canvas学习笔记一】基本认识
<canvas>标签定义了一块画布,画布可以在网页中绘制2D和3D图象,现在先学习如何绘制2D图象,绘制3D图象属于WebGL的内容(也就是网页版的OpenGL,3D图形接口). 属性 & ...
- 【canvas学习笔记二】绘制图形
上一篇我们已经讲述了canvas的基本用法,学会了构建canvas环境.现在我们就来学习绘制一些基本图形. 坐标 canvas的坐标原点在左上角,从左到右X轴坐标增加,从上到下Y轴坐标增加.坐标的一个 ...
随机推荐
- 【转】《从入门到精通云服务器》第四讲—DDOS攻击
上周咱们深入分析了云服务器的配置问题,好了,现在手上有了云服务器之后,我们又不得不提它:DDOS攻击.这是所有运维者的心头痛,也是任何公司听闻后都将心惊胆战的强大对手.下面我们将用浅显易懂的方式讲述什 ...
- hdu3068马拉车
其实马拉车还真是最好理解的算法(感觉初中的时候好像讲过类似的,但是当时就没有认真听) 没想到一个简单的优化能变成O(n),感觉碉堡 不说了,马拉车裸题,我在写的时候只保留了id,没保留mx,希望能形成 ...
- 体育游戏中的Player类
最近在做一个棒球的游戏,开始感觉还是挺酷炫的,但是其实做法挺朴实的,想象中的球员是多么智能,这样那样的,其实只是表象. 关于球员的类是游戏里非常重要的部分,这个玩意怎么写呢,可以这样写...... 棒 ...
- AngularJS中的route可以控制页面元素的改变,使多页面变成一个单页面。。。
SPA(Single Page Application)指的是通单一页面展示所有功能,通过Ajax动态获取数据然后进行实时渲染,结合CSS3动画模仿原生App交互,然后再进行打包(使用工具把Web应用 ...
- js中的navigator对象
Navigator 对象包含有关浏览器的信息.所有浏览器都支持该对象 在控制台中输出相关信息的代码 <script> console.log(navigator); </script ...
- Usaco*Brownie Slicing
Description Bessie烘焙了一块巧克力蛋糕.这块蛋糕是由R*C(1 <= R,C <= 500)个小的巧克力蛋糕组成的. 第i行,第j列的蛋糕有N_ij(1 <= N_ ...
- EL表达式判断
今天在做开发时遇到个小问题,就百度一番很快找到答案.这里记一下免得以后到处找... 在项目中显示项目名称时因为名字太长所以影响我的样式问题. 解决办法就是将固定长度之后的用"..." ...
- RunLoop
一.什么是RunLoop 从字面意思理解:运行循环.跑圈. 基本作用: 保持程序(应用)的持续运行. 处理程序(APP)中的各种事件(比如:触摸事件.定时事件.Selector事件等) 节省CPU资源 ...
- gdb调试工具vi编译器命令参考网址
vi编译器命令:参考http://www.cnblogs.com/junw_china/articles/1708967.html gbd调试命令:参考http://blog.chinaunix.ne ...
- 大家一起Aop
一.前言 1.在项目中无处不充斥着记录日志的代码,各种try catch,实在是有点看着不爽.这不,果断要想法子偷个懒儿. 二.摘要 鄙人不才,先总结一下个人想到的可实现AOP的几种思路: 1.通过继 ...