为了研究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学习笔记一的更多相关文章

  1. canvas学习笔记、小函数整理

    http://bbs.csdn.net/topics/391493648 canvas实例分享 2016-3-16 http://bbs.csdn.net/topics/390582151 html5 ...

  2. canvas学习笔记,实用知识点总结(上)

    本博客是本人日常学习笔记,作为重要知识点的总结记录,随笔风格可能更倾向于个人的学习习惯和方式,若对您有帮助十分荣幸,若存在问题欢迎互相学习探讨,前端小白一枚在此恭候. 一.基本使用规则 1.创建画布 ...

  3. canvas学习笔记(下篇) -- canvas入门教程--保存状态/变形/旋转/缩放/矩阵变换/综合案例(星空/时钟/小球)

    [下篇] -- 建议学习时间4小时  课程共(上中下)三篇 此笔记是我初次接触canvas的时候的学习笔记,这次特意整理为博客供大家入门学习,几乎涵盖了canvas所有的基础知识,并且有众多练习案例, ...

  4. canvas学习笔记(中篇) -- canvas入门教程-- 颜色/透明度/渐变色/线宽/线条样式/虚线/文本/阴影/图片/像素处理

    [中篇] -- 建议学习时间4小时  课程共(上中下)三篇 此笔记是我初次接触canvas的时候的学习笔记,这次特意整理为博客供大家入门学习,几乎涵盖了canvas所有的基础知识,并且有众多练习案例, ...

  5. canvas学习笔记(上篇)-- canvas入门教程 -- canvas标签/方块/描边/路径/圆形/曲线

    [上篇] -- 建议学习时间4小时  课程共(上中下)三篇 此笔记是我初次接触canvas的时候的学习笔记,这次特意整理为博客供大家入门学习,几乎涵盖了canvas所有的基础知识,并且有众多练习案例, ...

  6. canvas学习笔记:canvas对图片的像素级处理--ImageData的应用

    学习了canvas的基本绘图功能后,惊喜的发现canvas对图片数据也有相当强大的处理功能,能够从像素级别操作位图,当然[lte ie8]不支持. 主要的函数有三个: ctx.createImageD ...

  7. canvas学习笔记(一)-认识canvas

    canvas是html5新增的一个标签,主要用于图形的绘制.我们可以把它理解为是浏览器给我们提供了一个画板,至于要绘制怎样的画卷,就看神笔马良你的主意了.而在canvas上绘制图形使用的笔,就是js了 ...

  8. 【canvas学习笔记一】基本认识

    <canvas>标签定义了一块画布,画布可以在网页中绘制2D和3D图象,现在先学习如何绘制2D图象,绘制3D图象属于WebGL的内容(也就是网页版的OpenGL,3D图形接口). 属性 & ...

  9. 【canvas学习笔记二】绘制图形

    上一篇我们已经讲述了canvas的基本用法,学会了构建canvas环境.现在我们就来学习绘制一些基本图形. 坐标 canvas的坐标原点在左上角,从左到右X轴坐标增加,从上到下Y轴坐标增加.坐标的一个 ...

随机推荐

  1. 20161023 NOIP 模拟赛 T2 解题报告

    Task 2.回文串计数 (calc.pas/calc.c/calc.cpp) [题目描述] 虽然是一名理科生,Mcx常常声称自己是一名真正的文科生.不知为何,他对于背诵总有一种莫名的热爱,这也促使他 ...

  2. 【专业找水题】状压dp最水题,没有之一

    题目链接 现在代码能力没上升,倒是越来越会找水题了(比例题还水的裸题你值得拥有) 这网站不是针对竞赛的,所以时空限制都很宽松 然后就让我水过去了 对于每个点,包括自己的前m个元素是否取都是一种状态,所 ...

  3. LintCode 78:Longest Common Prefix

      public class Solution { /** * @param strs: A list of strings * @return: The longest common prefix ...

  4. android开发中使不同的listview同时联动

    在做一个Android程序时,需要在一个屏幕上显示两个不同的listview,开始用< linearlayout>包裹这两个listview在<ScrollView >设置时, ...

  5. mssql查询列名中包含特定字段的列

    CREATE TABLE itemdata_LANG ( itemno ) NOT NULL, itemname ), -- 产品名称 othername ), indications ), -- 适 ...

  6. iOS开发之单元测试

    开始之前 本文侧重讲述如何在iOS程序的开发过程中使用单元测试.使用Xcode自带的OCUnit作为测试框架. 一.单元测试概述 单元测试作为敏捷开发实践的组成之一,其目的是提高软件开发的效率,维持代 ...

  7. HTTP协议详解(转)

    转自:http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的 ...

  8. centos中yum安装mysql路径

    1. 使用命令service mysqld stop 停止mysql 查看mysql数据库的默认路径:/var/lib/mysql 使用cp -afir  /var/lib/mysql/*   /us ...

  9. Html5 中的新语义标签

    1.1 语义标签对于我们并不陌生,如<p>表示一个段落.<ul>表示一个无序列表<h1> ~ <h6>表示一系列标题等,在此基础上HTML5增加了大量更 ...

  10. VB.net 2010下关联与程序图标设置

    '*************************************************************************'**模 块 名:VB.net 2010下关联与程序 ...