Canvas 绘图使用语法

1、canvas标签

<canvas  width=""  height=""
 id="">

您的浏览器不支持canvas,请更换浏览器!

*注:canvas的宽高度最好设置成行内样式,不然会等比变化

例如:在嵌入样式中设置canvas 宽高为:500px X 500px

在canvas中画100px * 100px 的矩形,矩形宽高会等比变化

500/300 : 500/150 = x/100 : y/100;

</canvas>

2、默认宽度300px,默认高度 150px

3、canvas绘图环境设置

getContext("2d"); 目前支持2d绘图环境

/*

var can = document.getElementById("can");

var cxt = can.getContext("2d"); //2d绘图环境,提供api[stroke、fill、etc.]

*/

4、绘图路劲:

beginPath()
:开始路劲

closePath():结束路劲

//形成一个闭合路径

moveTo(x,y):将触笔移动到x,y点

lineTo(x,y):绘制到x,y点

/*绘制三角形*/

//一个起点,两个终点

stroke(): 触笔方法
画线  默认为黑色 绘制一个空心的矩形

fill():填充方法
 绘制一个实心的矩形

rect(x,y,w,h):矩形路劲/*x
=> 横坐标  y => 纵坐标 w => 宽度 h=> 高度 */

/*

cxt.rect(50,50,100,100);

cxt.stroke();

*/

save():保存路劲

restore():恢复路劲

/*相当于开辟一个新的空间,把这个内容放在新的空间里,画完在释放出来*/

5、绘制矩形:

fillRect(x,y,w,h)   填充实心矩形
 /*cxt.fillRect(50,50,100,100);*/

strokeRect(x,y,w,h)  绘制空心矩形 /*cxt.strokeRect(50,50,100,100);*/

clearRect(x,y,w,h)  清楚矩形选区

/*cxt.clearRect(0,0,can.width,can.height);清除整个canvas选区*/

6、设置绘图样式:

fillStyle: 填充颜色

strokeStyle: 触笔颜色

/*cxt.strokeStyle = "#03f";cxt.strokeRect(50,50,100,100);*/

lineWidth: 触笔宽度(线宽)

/*cxt.lineWidth = 10*/

两者同时使用时显示与书写顺序有关:

7、图形边界样式:

lineJoin : 边界连接点样式

miter(默认值),round(圆角),bevel(斜角)

/*ctx.lineJoin="round";*/

lineCap: 端点样式

butt(默认值),round(圆角),square(高度多出线宽一半)

/*ctx.lineCap="round";*/

8、绘制圆形:

arc(x,y,r,0,360,false)

x,y  圆心坐标位置

r 圆半径

0,360 从0度到360度
绘制一个圆形

true/false  顺时针/逆时针绘图

/*cxt.arc(250,250,50,0,360,false);*/

9、绘制曲线

arcTo(x1,y1,x2,y2,r)

x1,y1 坐标一  x2,y2坐标二   r圆弧半径

quadraticCurveTo(dx,dy,x1,y1)

10、 贝塞尔曲线:dx,dy控制点  x1,y1结束坐标

bezierCurveTo(dx1,dy1,dx2,dy2,x1,y1)

贝塞尔曲线:dx1,dy1 控制点一 dx2,dy2控制点二

x1,y1结束坐标

11、canvas变换

translate(x,y)

坐标基准点偏移 : 从起始点为基准,移动到当前位置

rotate(弧度): 旋转  弧度公式
:角度*Math.PI/180

scale : scale(wb,hb)缩放比例(缩放canvas绘制的图片)

相对于前一个进行缩放

定义和用法

arc() 方法创建弧/曲线(用于创建圆或部分圆)。

提示:如需通过 arc() 来创建圆,请把起始角设置为 0,结束角设置为 2*Math.PI。

提示:请使用 stroke() 或 fill() 方法在画布上绘制实际的弧。

  • 中心:arc(100,75,50,0*Math.PI,1.5*Math.PI)
  • 起始角:arc(100,75,50,0,1.5*Math.PI)
  • 结束角:arc(100,75,50,0*Math.PI,1.5*Math.PI)

JavaScript 语法:

context.arc(x,y,r,sAngle,eAngle,counterclockwise);

参数值

参数 描述
x 圆的中心的 x 坐标。
y 圆的中心的 y 坐标。
r 圆的半径。
sAngle 起始角,以弧度计。(弧的圆形的三点钟位置是 0 度)。
eAngle 结束角,以弧度计。
counterclockwise 可选。规定应该逆时针还是顺时针绘图。False = 顺时针,true = 逆时针。

12、

绘制图片

图片预加载,获取图片文件

onload中调用

drawImage(img,x,y,w,h);绘制图片(图片,坐标x,坐标y,宽度,高度)

设置背景

createPattern(img,平铺方式)

平铺方式:repeat,repeat-x,repeat-y,no-repeat

13、颜色渐变

线性渐变:createLinearGradient(x1,y1,x2,y2)

x1,y1起始坐标点

x2,y2结束坐标点

径向渐变:createRadialGradient(x1,y1,r1,x2,y2,r2)

x1,y1,r1内圆坐标及半径

x2,y2,r2外圆坐标及半径

addColorStop(位置,颜色)

位置:渐变点  0-1之间
可多个

线性渐变:

径向渐变:

14、绘制文本

strokeText(文本,x,y);  绘制空心文本

fillText(文本,x,y); 绘制实心文本

font = "font-size  font-family" 注:尺寸
字体缺一不可

textAlign =
"";文本左右对齐方式

start center end  left right

textBaseline文本上下对齐方式

alphabetic  默认。文本基线是普通的字母基线。

top  文本基线是em方框的顶端。。

hanging  文本基线是悬挂基线。

middle  文本基线是em方框的正中。

ideographic  文本基线是表意基线。

bottom  文本基线是em方框的底端。

measureText(文本).width; 文本实际宽度(只有宽度值)

15、阴影

shadowOffsetX,shadowOffsetY    x轴、y轴偏移

shadowBlur    阴影模糊度

shadowColor  阴影颜色

默认颜色:rgba(0,0,0,0)

16、像素

createImageData(sx,sy)

创建新的、空白的 ImageData对象

getImageData(x1,y1,sx,sy)【必须是同源,同一域名下】

返回 ImageData对象,该对象为画布上指定的矩形复制像素数据  putImageData(img,x2,y2)

把图像数据(从指定的 ImageData对象)放回画布上

17、合成

globalAlpha  设置或返回绘图的当前 alpha 或透明值

globalCompositeOperation 设置或返回新图像如何绘制到已有的图像上

source-over默认。在目标图像上显示源图像。

source-atop在目标图像顶部显示源图像。源图像位于目标图像之外的部分是不可见的。

source-in  在目标图像中显示源图像。只有目标图像内的源图像部分会显示,目标图像是透明的。

source-out  在目标图像之外显示源图像。只会显示目标图像之外源图像部分,目标图像是透明的。

destination-over在源图像上方显示目标图像。

destination-atop在源图像顶部显示目标图像。源图像之外的目标图像部分不会被显示。

destination-in在源图像中显示目标图像。只有源图像内的目标图像部分会被显示,源图像是透明的。

destination-out在源图像外显示目标图像。只有源图像外的目标图像部分会被显示,源图像是透明的。

lighter显示源图像 + 目标图像。

copy显示源图像。忽略目标图像。

xor使用异或操作对源图像与目标图像进行组合。

18、将画布导出为图片

火狐、谷歌浏览器右键菜单可直接导出为图片

toDataURL

19、事件

isPointInPath(x,y)

如果指定的点位于当前路径中,返回布尔值

只能判断最后绘制出来的图片

时间: 2024-10-05 00:24:57

Canvas 绘图使用语法的相关文章

HTML学习总结(四)【canvas绘图、WebGL、SVG】

一.Canvas canvas是HTML5中新增一个HTML5标签与操作canvas的javascript API,它可以实现在网页中完成动态的2D与3D图像技术.<canvas> 标记和 SVG以及 VML 之间的一个重要的不同是,<canvas> 有一个基于 JavaScript 的绘图 API,而 SVG 和 VML 使用一个 XML 文档来描述绘图.SVG 绘图很容易编辑与生成,但功能明显要弱一些. canvas可以完成动画.游戏.图表.图像处理等原来需要Flash完成的一

HTML5 学习总结(四)——canvas绘图、WebGL、SVG

HTML5 学习总结(四)--canvas绘图.WebGL.SVG 目录 一.Canvas 1.1.创建canvas元素 1.2.画线 1.3.绘制矩形 1.4.绘制圆弧 1.5.绘制图像 1.6.绘制文字 1.7.随机颜色与简单动画 二.WebGL 2.1.HTML5游戏开发 2.2.1.Cocos2D-HTML5 2.2.2.Egret(白鹭引擎) 三.SVG 3.1.SVG Hello Wrold 3.2.多种引入SVG的方法 3.3.画直线 3.4.画椭圆 3.5.文本与矩形 3.6.向

HTML5 学习笔记(四)——canvas绘图、WebGL、SVG

一.Canvas canvas是HTML5中新增一个HTML5标签与操作canvas的javascript API,它可以实现在网页中完成动态的2D与3D图像技术.<canvas> 标记和 SVG以及 VML 之间的一个重要的不同是,<canvas> 有一个基于 JavaScript 的绘图 API,而 SVG 和 VML 使用一个 XML 文档来描述绘图.SVG 绘图很容易编辑与生成,但功能明显要弱一些. canvas可以完成动画.游戏.图表.图像处理等原来需要Flash完成的一

canvas 绘图api的位置问题

今天因为canvas绘图的为之问题浪费了一些时间. 我们知道canvas的默认宽高是300X150嘛. 实际使用的时候当然是自定义一个高宽啦. 在js中通过canvasDom.style设置了某个高宽的时候,canvas在页面上也确实伸缩了. 但是用某些api的时候,传入位置参数时,还是按照300X150规格来处理位置的!如果想让位置居中的话,传入canvas.width/2或canvas.height/2就好了. 这是之前留意过的问题,今天才发现.可怜我试错地在模拟器上反复折腾,确定真相的我眼

引言:Canvas绘图API快速入门

引言:Canvas绘图API快速入门 在接触HTML5的初学者包括我都在很多地方见到非常炫的一些页面,甚至好多学习HTML5的开发者都是冲着Web端的页游去的,那么HTML5那么绚丽的页面效果以及游戏动画效果的原理是怎样的?本篇文章将带您在20分钟内快速了解和上手HTML5游戏开发的神器:Canvas绘制API. 一.Canvas是什么? Canvas就是一个画布,可以进行画任何的线.图形.填充等一系列的操作,而且操作的画图就是js,所以让js编程到了嗑药的地步.另外Canvas不仅仅提供简单的

伙伴们休息啦canvas绘图夜空小屋

HTML5 canvas绘图夜空小屋 伙伴们园友们,夜深了,休息啦,好人好梦... 查看效果:http://hovertree.com/texiao/html5/28/ 效果图如下: 代码如下: 1 <!doctype html> 2 <html> 3 <head><meta name="viewport" content="width=device-width, initial-scale=1" /> 4 <t

Android中Canvas绘图之Shader使用图文详解

概述 我们在用Android中的Canvas绘制各种图形时,可以通过Paint.setShader(shader)方法为画笔Paint设置shader,这样就可以绘制出多彩的图形.那么Shader是什么呢?做过GPU绘图的同学应该都知道这个词汇,Shader就是着色器的意思.我们可以这样理解,Canvas中的各种drawXXX方法定义了图形的形状,画笔中的Shader则定义了图形的着色.外观,二者结合到一起就决定了最终Canvas绘制的被色彩填充的图形的样子. 类android.graphics

Android中Canvas绘图之PorterDuffXfermode使用及工作原理详解

概述 类android.graphics.PorterDuffXfermode继承自android.graphics.Xfermode.在用Android中的Canvas进行绘图时,可以通过使用PorterDuffXfermode将所绘制的图形的像素与Canvas中对应位置的像素按照一定规则进行混合,形成新的像素值,从而更新Canvas中最终的像素颜色值,这样会创建很多有趣的效果.当使用PorterDuffXfermode时,需要将将其作为参数传给Paint.setXfermode(Xfermo

Android中Canvas绘图基础详解(附源码下载)

Android中,如果我们想绘制复杂的自定义View或游戏,我们就需要熟悉绘图API.Android通过Canvas类暴露了很多drawXXX方法,我们可以通过这些方法绘制各种各样的图形.Canvas绘图有三个基本要素:Canvas.绘图坐标系以及Paint.Canvas是画布,我们通过Canvas的各种drawXXX方法将图形绘制到Canvas上面,在drawXXX方法中我们需要传入要绘制的图形的坐标形状,还要传入一个画笔Paint.drawXXX方法以及传入其中的坐标决定了要绘制的图形的形状