canvas技术整理
canvas技术整理
html
<canvas id= "canvas"></canvas> javascript
var canvas = document.getElementById('canvas')
var context =canvas.getContext('2d')
//使用context进行绘制 canvas.width
canvas.height
canvas.getContext('2d') moveTo(x,y)
lineTo(x,y)
beginPath()
closePath() lineWith //线条宽度
strokeStyle //线条样式
fillStyle //填充颜色
stroke() //绘制
fill() //填充 rect(x,y,width,height) //勾勒矩形边框路径
fillRect(x,y,width,height) //填充矩形
strokeRect(x,y,width,height) //绘制带边框的路径 //线条属性
lineWith //线条宽度
lineCap="butt"(default) //线条帽子的形状
"round" 圆形
"square" 方形
lineJion="miter"(default) 尖角
"bevel" 斜切
"round" 圆角
miterLimit //图形变换
save()
restore() translate(x,y)
rotate(deg)
scale(sx,sy) //变换矩阵
[a c e] [水平缩放(1) 垂直倾斜(0) 水平位移(0)]
[b d f] [水平倾斜(0) 垂直缩放(1) 垂直位移(0)]
[0 0 1]
transfrom(a,b,c,d,e,f) //效果会累加
setTransform(a,b,c,d,e,f) //仅使用该效果 //渐变色和纹理
fillStyle = color / gradient / image / canvas / video
color格式:#ffffff / #642 / rgb / rgba / hsl / hsla / red
gradient格式:Linear Gradient(线性渐变)
var grd = context.createLinearGradient(xstart,ystart,xend,yend);
Radial Gradient(径向渐变)
var grd = context.createRadialGradient(xstart,ystart,xend,yend);
grd.addColorStop(stop,color);
image||canvas||video格式:
createPattern(img / canvas / video , repeat-style)
repeat-style:no-repeat / repeat-x / repeat-y / repeat //曲线的绘制
context.arc(centerx,centery,radius,startingAngle,endingAngle,anticlockwise=false)
context.crcTo(x1,y1,x2,y2,radius) context.quadraticCurveTo(x1,y1, //控制点
x2,y2) //结束点
context.bezeirCurveTo(x1,y1,x2,y2, //控制点
x3,y3) //结束点 //文字渲染
context.font="bold 40px Arial"
context.fillText(string,x,y,[maxlen]);
context.strokeText(string,x,y,[maxlen]); font
默认值:"20px sans-serif"
context.font = font-style font-variant font-weight font-size font-family
font-style: normal (Default)
italic (斜体字)
oblique (倾斜字体)
font-variant:normal (Default)
small-caps (以英文小写显示大写字母)
font-weight: lighter
normal (Deafult)
bold
bolder
100,200,300,400(normal),500,600,700(bold),800,900
font-size: 20px (Deafult)
2em
150%
xx-small x-small medium large x-large xx-large
font-famly: 设置多种字体备选 / 支持@font-face / web安全字体
context.textAlign = left / center / right
context.textBaseline = top / middle / bottom (垂直对齐)
alphabetic(Deafult) (基于拉丁字母设计的垂直对齐)
ideographic (基于方块字体设计的垂直对齐)
hanging (基于印度语设计的垂直对齐) //图片
drawImage(image,dx,dy)
drawImage(image,dx,dy,dw,dh)
drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh)
dx,dy:image在canvas中定位的坐标值;
dw,dh:image在canvas中即将绘制区域的宽高;(相对于dx,dy坐标的偏移量)
sx,sy:image在canvas中所要绘制的起始位置;
sw,sh:image在canvas中所要绘制区域的宽高;(相对于sx,sy坐标的偏移量)
getImageData(x,y,w,h)
putImageData(imgdata,dx,dy,sx,sy,sw,sh)
createImageData(sw,sh)
createImageData(imagedata) //阴影
context.shadowColor
context.shadowOffsetX //X偏移
context.shadowOffsetY //Y偏移
context.shadowBlur //模糊 //高级
globalAlpha = 1 (默认值)
globalCompositeOperation = "source-over" (默认值)
参数:source-over destination-over lighter
source-atop destination-atop copy
source-in destination-in xor
source-out destination-out //路径方向和剪纸效果
非零环绕原则 //剪辑区域
context.clip(); =>探照灯 //交互
context.clearRect(x,y,width,height)
context.isPointInPath(x,y)
canvas技术整理的更多相关文章
- C#进程间通讯技术-整理。
原文:C#进程间通讯技术-整理. 扩展阅读:http://www.cnblogs.com/joye-shen/archive/2012/06/16/2551864.html 一.进程间通讯的方式 1) ...
- 【重点突破】——Canvas技术绘制随机改变的验证码
一.引言 本文主要是我在学习Canvas技术绘图时的一个小练习,绘制随机改变的验证码图片,虽然真正的项目里不这么做,但这个练习是一个掌握Canvas技术很好的综合练习.(真正的项目中验证码图片使用服务 ...
- DBGrid相关技术整理
DBGrid相关技术整理: 注:对于DBGrid相关属性.方法的学习融入到技术整理过程中 一,多选 设置属性: Options->dgMultiSelect = True; ->dgRow ...
- 【重点突破】——Canvas技术绘制音乐播放器界面
一.引言 在用Canvas练习制作了验证码之后,还有一个用Canvas技术很综合的练习——制作音乐播放器.在做这个练习的过程中,还有一个重要的观察点,那就是理解Canvas的一大问题. 二.要求 点 ...
- Java成神之路技术整理(长期更新)
以下是Java技术栈微信公众号发布的关于 Java 的技术干货,从以下几个方面汇总. Java 基础篇 Java 集合篇 Java 多线程篇 Java JVM篇 Java 进阶篇 Java 新特性篇 ...
- Java成神之路技术整理
关于 Java 的技术干货,从以下几个方面汇总. Java 基础篇 Java 集合篇 Java 多线程篇 Java JVM篇 Java 进阶篇 Java 新特性篇 Java 工具篇 Java 书籍篇 ...
- 51建设Android版一些技术整理
不知不觉几个月就过去了,新项目已经发了两个大的版(其实已经迭代了3版),趁着项目新版刚刚上线闲下来的时间整理下用到的技术点. 整体架构 采用MVP Android官方MVP架构示例项目解析 推荐一个插 ...
- 基于.NET平台常用的框架技术整理
个人整理 部分收藏于:http://www.cnblogs.com/hgmyz/p/5313983.html 自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线 ...
- canvas技术概述
canvas简介 在学习一项新技术之前,先了解这项技术的历史发展及成因会帮助我们更深刻的理解这项技术. 历史上,canvas最早是由Apple Inc. 提出的,在Mac OS X webkit中创建 ...
随机推荐
- (转)win7批量创建用户
@echo off::zhangsan 改为你需要建立的用户名,123456改为你的密码,后面的两个参数的意思是“用户::不可以更改密码”和“密码永不过期”net user xiaowei 12345 ...
- Advanced Javascript outlining插件说明
Advanced Javascript outlining插件 用途:在js文件中写入#region/#endregion代码组合段,可收缩和展开.类似于后台页面的region用法. 效果截图如下(前 ...
- js中数组的使用
使用js时候,很多情况下要使用数组.就写写数组中一些常用的方法. js中定义一个数组,一般有以下2种方法. 1. var arr = new Array(3); // 声明数组有3个元素 arr[0] ...
- CAN总线学习系列之— CAN总线特点介绍
CAN总线学习系列之— CAN总线特点介绍 CAN 总线作为一种工业界的流行总线广泛应于工业自动化.多种控制设备.交通工具.医疗仪器以及建筑.环境控制等各个行业中,它是是一种多主机局域网,所以这样 一 ...
- How develop BigData Project in Visual Studio
- 20155223 Exp6 信息收集与漏洞扫描
20155223 Exp6 信息收集与漏洞扫描 本次实验以熟悉信息收集手段与漏洞扫描手段为主. 实践步骤 whois域名查找 在虚拟机Kali的终端输入命令:whois baidu.com,查询百度的 ...
- [清华集训2015 Day1]玛里苟斯-[线性基]
Description Solution 考虑k=1的情况.假设所有数中,第i位为1的数的个数为x,则最后所有的子集异或结果中,第i位为1的个数为$(C_{k}^{1}+C_{k}^{3}+...)$ ...
- 对*P++的理解,再联想~~~
前言: 最近在看一位叫朱有鹏大神的视频,讲的甚好.应此,我的感悟也因此被激发,准备针对朱老师将的内容,结合自己的理解,写一个系列的笔记博客--大家可以去www.zhulaoshi.org观看视频-- ...
- 蒙特卡罗方法 python 实现2
如果不考虑作图,这里的两个例子可以改写成下面的样子: 求圆周率 import random ''' 蒙特卡罗模拟 投点法计算圆周率 ''' # 投点游戏 def play_game(): # 圆 r ...
- C#语法糖yield
代码中经常遇到迭代数据集合的情况,当希望获取到一个IEnumerable<T>类型的集合,而又不想把数据一次性加载到内存中时, 可以考虑使用yield,yield关键字可实现用户的按需获取 ...