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轴坐标增加.坐标的一个 ...
随机推荐
- 20161023 NOIP 模拟赛 T2 解题报告
Task 2.回文串计数 (calc.pas/calc.c/calc.cpp) [题目描述] 虽然是一名理科生,Mcx常常声称自己是一名真正的文科生.不知为何,他对于背诵总有一种莫名的热爱,这也促使他 ...
- 【专业找水题】状压dp最水题,没有之一
题目链接 现在代码能力没上升,倒是越来越会找水题了(比例题还水的裸题你值得拥有) 这网站不是针对竞赛的,所以时空限制都很宽松 然后就让我水过去了 对于每个点,包括自己的前m个元素是否取都是一种状态,所 ...
- LintCode 78:Longest Common Prefix
public class Solution { /** * @param strs: A list of strings * @return: The longest common prefix ...
- android开发中使不同的listview同时联动
在做一个Android程序时,需要在一个屏幕上显示两个不同的listview,开始用< linearlayout>包裹这两个listview在<ScrollView >设置时, ...
- mssql查询列名中包含特定字段的列
CREATE TABLE itemdata_LANG ( itemno ) NOT NULL, itemname ), -- 产品名称 othername ), indications ), -- 适 ...
- iOS开发之单元测试
开始之前 本文侧重讲述如何在iOS程序的开发过程中使用单元测试.使用Xcode自带的OCUnit作为测试框架. 一.单元测试概述 单元测试作为敏捷开发实践的组成之一,其目的是提高软件开发的效率,维持代 ...
- HTTP协议详解(转)
转自:http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的 ...
- centos中yum安装mysql路径
1. 使用命令service mysqld stop 停止mysql 查看mysql数据库的默认路径:/var/lib/mysql 使用cp -afir /var/lib/mysql/* /us ...
- Html5 中的新语义标签
1.1 语义标签对于我们并不陌生,如<p>表示一个段落.<ul>表示一个无序列表<h1> ~ <h6>表示一系列标题等,在此基础上HTML5增加了大量更 ...
- VB.net 2010下关联与程序图标设置
'*************************************************************************'**模 块 名:VB.net 2010下关联与程序 ...