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轴坐标增加.坐标的一个 ...
随机推荐
- Xamarin笔记
Xamarin学习笔记 1. Xamarin Studio自动更新下载的安装文件缓存路径:C:\Users\登录用户\AppData\Local\XamarinStudio-5.0\Cache\Tem ...
- 前端小知识~~关于css3新增知识~~归纳总结
1.新增选择器 E:nth-last-child(n) E:nth-of-type(n) E:nth-last-of-type(n) E:last-child E:first-of-type E:on ...
- SQL Server 2008中的代码安全<转>
一:存储过程加密与安全上下文 二:DDL触发器与登录触发器 三:通过PassPhrase加密 四:主密钥 五:非对称密钥加密 六:对称密钥加密 七:证书加密 八:透明加密(TDE) 将 TDE 保护的 ...
- Android 怎么退出整个应用程序?
方法一: 我们在写android应用程序时,经常会遇到想退出当前Acitivity,或者直接退出应用程序.我之前的一般操作是按返回键,或者直接按home键直接返回,其实这两种操作都没有关闭当前应用程序 ...
- idea 根据数据库表自动创建持久化类
一.点击最右边的Database: 二.点击,再点DataSource选择数据库类型,配置数据库信息: 三.打开项目结构,选择,找到你的项目,点击,添加hibernate: 四.如果有现成的cfg.x ...
- 【转】【10g SQL新特性】q-quote使用
转自:http://blog.chinaunix.net/uid-7655508-id-3684042.html 转发只为留存学习 在Oracle中,字符串的字面量如果含有单引号,那么必须转义,而且转 ...
- 借助cookie实现子网页修改父网页内容遇到的问题:同一个浏览器访问相同页面,会互相影响。 (已解决)
问题是这样的, 我把左侧菜单做成了网页, 然后点击左侧菜单选项会改变右侧内容, 也就是子网页访问并修改父网页的内容. 为了兼容性更好, 我没有使用farther,或者opener等方法, 而是用了 ...
- daima
# -*- coding: utf-8 -*- import theano import theano.tensor as T import numpy as np from sklearn impo ...
- asp.net 生成图形验证码(字母和数字混合)
验证码技术是网站开发过程中比较重要的技术,可以防止非法人员利用注册机或者登陆工具来攻击我们的网站.下面是效果图: 具体实现方法如下: 1.主要思路是:引用Using System.Drawing命名空 ...
- 【一】Ubuntu14.04+Jekyll+Github Pages搭建静态博客
本系列有五篇:分别是 [一]Ubuntu14.04+Jekyll+Github Pages搭建静态博客:主要是安装方面 [二]jekyll 的使用 :主要是jekyll的配置 [三]Markdown+ ...