您的位置:

js的canvas应用,canvas web

js的canvas应用,canvas web

更新:

本文目录一览:

JS之使用Canvas绘图

canvas 元素负责在页面中设定一个区域,然后就可以通过 JavaScript 动态地在这个区域中绘制图形。

要使用 canvas 元素,必须先设置其 width 和 height 属性,指定可以绘图的区域大小。出现在开始和结束标签中的内容是后备信息,如果浏览器不支持 canvas 元素,就会显示这些信息。

如果不添加任何样式或者不绘制任何图形,在页面中是看不到该元素的。

要在这块画布(canvas)上绘图,需要取得绘图上下文。而取得绘图上下文对象的引用,需要调用getContext() 方法并传入上下文的名字。传入 "2d" ,就可以取得 2D 上下文对象。

使用 toDataURL() 方法,可以导出在 canvas 元素上绘制的图像。这个方法接受一个参数,即图像的 MIME 类型格式,而且适合用于创建图像的任何上下文。

取得画布中的一幅 PNG 格式的图像:

如果绘制到画布上的图像源自不同的域, toDataURL() 方法会抛出错误。

使用 2D 绘图上下文提供的方法,可以绘制简单的 2D 图形,比如矩形、弧线和路径。2D 上下文的坐标开始于 canvas 元素的左上角,原点坐标是(0,0)。

2D 上下文的两种基本绘图操作是填充和描边。填充,就是用指定的样式(颜色、渐变或图像)填充图形;描边,就是只在图形的边缘画线。大多数 2D 上下文操作都会细分为填充和描边两个操作,而操作的结果取决于两个属性: fillStyle 和 strokeStyle 。

这两个属性的值可以是字符串、渐变对象或模式对象,而且它们的默认值都是 "#000000" 。如果为它们指定表示颜色的字符串值,可以使用 CSS 中指定颜色值的任何格式,包括颜色名、十六进制码、rgb 、 rgba 、 hsl 或 hsla 。

与矩形有关的方法包括 fillRect() 、strokeRect() 和 clearRect() 。这三个方法都能接收 4 个参数:矩形的 x 坐标、矩形的 y 坐标、矩形宽度和矩形高度。这些参数的单位都是像素。

fillRect() 方法在画布上绘制的矩形会填充指定的颜色。填充的颜色通过 fillStyle 属性指定:

strokeRect() 方法在画布上绘制的矩形会使用指定的颜色描边。描边颜色通过 strokeStyle 属性指定。

描边线条的宽度由 lineWidth 属性控制,该属性的值可以是任意整数。另外,通过 lineCap 属性可以控制线条末端的形状是平头、圆头还是方头( "butt" 、"round" 或 "square" ),通过 lineJoin 属性可以控制线条相交的方式是圆交、斜交还是斜接( "round" 、 "bevel" 或 "miter" )。

clearRect() 方法用于清除画布上的矩形区域。本质上,这个方法可以把绘制上下文中的某一矩形区域变透明。

通过路径可以创造出复杂的形状和线条。要绘制路径,首先必须调用 beginPath() 方法,表示要开始绘制新路径。然后,再通过调用下列方法来实际地绘制路径。

如果想绘制一条连接到路径起点的线条,可以调用closePath() 。如果路径已经完成,你想用 fillStyle 填充它,可以调用 fill() 方法。另外,还可以调用 stroke() 方法对路径描边,描边使用的是 strokeStyle 。最后还可以调用 clip() ,这个方法可以在路径上创建一个剪切区域。

绘制一个不带数字的时钟表盘:

isPointInPath() 方法接收 x 和 y 坐标作为参数,用于在路径被关闭之前确定画布上的某一点是否位于路径上。

绘制文本主要有两个方法: fillText() 和 strokeText() 。这两个方法都可以接收 4 个参数:要绘制的文本字符串、x 坐标、y 坐标和可选的最大像素宽度。

两个方法都以下列 3 个属性为基础:

fillText() 方法使用fillStyle 属性绘制文本, strokeText() 方法使用 strokeStyle 属性为文本描边。

通过上下文的变换,可以把处理后的图像绘制到画布上。2D 绘制上下文支持各种基本的绘制变换。创建绘制上下文时,会以默认值初始化变换矩阵,在默认的变换矩阵下,所有处理都按描述直接绘制。为绘制上下文应用变换,会导致使用不同的变换矩阵应用处理,从而产生不同的结果。

把原点变换到表盘的中心:

使用 rotate() 方法旋转时钟的表针:

可以调用 save() 方法,调用这个方法后,当时的所有设置都会进入一个栈结构,得以妥善保管。调用 restore() 方法,在保存设置的栈结构中向前返回一级,恢复之前的状态。

save() 方法保存的只是对绘图上下文的设置和变换,不会保存绘图上下文的内容。

可以使用 drawImage()方法把一幅图像绘制到画布上。

以使用三种不同的参数组合。最简单的调用方式是传入一个 HTML img 元素,以及绘制该图像的起点的 x 和 y 坐标。

如果想改变绘制后图像的大小,可以再多传入两个参数,分别表示目标

宽度和目标高度。通过这种方式来缩放图像并不影响上下文的变换矩阵。

绘制出来的图像大小会变成 20×30 像素。

可以选择把图像中的某个区域绘制到上下文中。 drawImage() 方法的这种调用方式总共需要传入 9 个参数:要绘制的图像、源图像的 x 坐标、源图像的 y 坐标、源图像的宽度、源图像的高度、目标图像的 x 坐标、目标图像的 y 坐标、目标图像的宽度、目标图像的高度。这样调用drawImage() 方法可以获得最多的控制。

2D 上下文会根据以下几个属性的值,自动为形状或路径绘制出阴影。

要创建一个新的线性渐变,可以调用 createLinearGradient() 方法。这个方法接收 4 个参数:起点的 x 坐标、起点的 y 坐标、终点的 x 坐标、终点的 y 坐标。调用这个方法后,它就会创建一个指定大小的渐变,并返回

CanvasGradient 对象的实例。

创建了渐变对象后,下一步就是使用 addColorStop() 方法来指定色标。这个方法接收两个参数:色标位置和 CSS 颜色值。色标位置是一个 0(开始的颜色)到 1(结束的颜色)之间的数字。

为了让渐变覆盖整个矩形,而不是仅应用到矩形的一部分,矩形和渐变对

象的坐标必须匹配才行。

要创建径向渐变(或放射渐变),可以使用 createRadialGradient() 方法。这个方法接收 6 个参数,对应着两个圆的圆心和半径。前三个参数指定的是起点圆的原心(x 和 y)及半径,后三个参数指定的是终点圆的原心(x 和 y)及半径。

模式其实就是重复的图像,可以用来填充或描边图形。要创建一个新模式,可以调用createPattern() 方法并传入两个参数:一个 HTML img 元素和一个表示如何重复图像的字符串。其中,第二个参数的值与 CSS 的 background-repeat 属性值相同,包括 "repeat" 、 "repeat-x" 、"repeat-y" 和 "no-repeat" 。

createPattern() 方法的第一个参数也可以是一个 video 元素,或者另一个 canvas 元素。

2D 上下文的一个明显的长处就是,可以通过 getImageData() 取得原始图像数据。这个方法接收4 个参数:要取得其数据的画面区域的 x 和 y 坐标以及该区域的像素宽度和高度。

取得左上角坐标为(10,5)、大小为 50×50 像素的区域的图像数据:

返回的对象是 ImageData 的实例。每个 ImageData 对象都有三个属性: width 、 height 和data 。其中 data 属性是一个数组,保存着图像中每一个像素的数据。

在 data 数组中,每一个像素用4 个元素来保存,分别表示红、绿、蓝和透明度值。

数组中每个元素的值都介于 0 到 255 之间(包括 0 和 255)。

还有两个会应用到 2D 上下文中所有绘制操作的属性: globalAlpha 和 globalCompositionOperation 。其中, globalAlpha 是一个介于 0 和 1 之间的值(包括 0和 1),用于指定所有绘制的透明度。默认值为 0。如果所有后续操作都要基于相同的透明度,就可以先把 globalAlpha 设置为适当

值,然后绘制,最后再把它设置回默认值 0。

第二个属性 globalCompositionOperation 表示后绘制的图形怎样与先绘制的图形结合。

WebGL 是针对 Canvas 的 3D 上下文。

WebGL是从 OpenGL ES 2.0 移植到浏览器中的,而 OpenGL ES 2.0 是游戏开发人员在创建计算机图形图像时经常使用的一种语言。WebGL 支持比 2D 上下文更丰富和更强大的图形图像处理能力。

WebGL 涉及的复杂计算需要提前知道数值的精度,而标准的 JavaScript 数值无法满足需要。为此,WebGL 引入了一个概念,叫类型化数组(typed arrays)。类型化数组也是数组,只不过其元素被设置为特定类型的值。

类型化数组的核心就是一个名为 ArrayBuffer 的类型。每个 ArrayBuffer 对象表示的只是内存中指定的字节数,但不会指定这些字节用于保存什么类型的数据。通过 ArrayBuffer 所能做的,就是为了将来使用而分配一定数量的字节。

创建了 ArrayBuffer 对象后,能够通过该对象获得的信息只有它包含的字节数,方法是访问其byteLength 属性:

使用 ArrayBuffer (数组缓冲器类型)的一种特别的方式就是用它来创建数组缓冲器视图。其中,最常见的视图是 DataView ,通过它可以选择 ArrayBuffer 中一小段字节。为此,可以在创建 DataView实例的时候传入一个 ArrayBuffer 、一个可选的字节偏移量(从该字节开始选择)和一个可选的要选择的字节数。

实例化之后, DataView 对象会把字节偏移量以及字节长度信息分别保存在 byteOffset 和byteLength 属性中。

类型化视图一般也被称为类型化数组,因为它们除了元素必须是某种特定的数据类型外,与常规的数组无异。

类型化数组是 WebGL 项目中执行各种操作的重要基础。

目前,主流浏览器的较新版本大都已经支持 canvas 标签。同样地,这些版本的浏览器基本上也都支持 2D 上下文。但对于 WebGL 而言,目前还只有 Firefox 4+和 Chrome 支持它。

《JS原理、方法与实践》- canvas作图(六)- 坐标操作

方法:translate(x,y):x,y代表移动后x,y坐标

方法:rotate(angle), 旋转角度,整数为逆时针,负数为顺时针。

实例

Canvas 使用指南

canvas 的能力是通过 context 对象表现出来的,context一般称为绘图环境。

DOMString 为 "2d" 时,context 是 CanvasRenderingContext2D 对象;(本文重点)

DOMString 为 "webgl" 时,context 是 WebGLRenderingContext 对象;

DOMString 为 "webgl2" 时,context 是 WebGL2RenderingContext 对象;

DOMString 为 "bitmaprenderer" 时,context 是 ImageBitmap 对象;

CanvasRenderingContext2D 对象实例 instance 共有16个属性,只要设置了这些属性,就会影响 instance 调用绘制方法时的表现,常用的有:

注意:可使用 instance 的 save() 和 restore() 方法来临时修改 instance 的属性

1、一般用来保存数据,不展示在浏览器页面上,创建的两种方式:a、css 方式设置为 display:none;b、JS创建 document.createElement('canvas');

2、与HTML结合使用:可以采用 CSS 定位的方式,将 HTML 元素置于 canvas 元素之上,比如:在 canva 上叠加一个 div panel 作为某个开关控制界面;选景橡皮筋;时钟等

3、也可使用两个 canvas,一个用来显示,另一个用来做数据准备和处理,这种方式通常效率高,但比较耗费内存

1、准备一个绘制背景的函数,用于每次擦除上一次绘制的结果

2、绘制辅助线

3、监听事件,做坐标转换 windowToCanvas

4、绘制内容的保存于恢复

5、三事件

onmousedown:保存初始 canvas 绘制状态

onmousemove: 更新位置信息,并不断调用初始 canvas 绘制状态来擦除上一个绘制

onmouseup: 调用初始 canvas 绘制状态来擦除上一个绘制,并根据onmousemove保存的信息做最终绘制,将结果绘制在 canvas 上

fillStyle 和 strokeStyle 可以是任意有效的css颜色值或者渐变色以及图像Pattern

canvas 某一时刻只能有一条路径存在,这条路径可以包含多条子路径。用 beginPath 来开始一条新路径或清除上一次子路径

textAlign: left,center,right

textBaseline: top,middle,bottom

1、三属性 font,textAlign,textBaseline

2、三方法 strokeText, fillText, measureText

strokeText(text,x,y,maxWidth) 指定文本超过maxWidth会被缩放

measureText(text).width 返回指定文本宽度

3、水平垂直居中

注意每次变换前,用 save 和 restore 来保存原来绘制上下文

1、由路径定义的一片区域,如一个三角形,矩形,圆形,然后调用 clip 即可得到剪辑区域

2、默认和 canvas 大小一致

3、设置剪辑区域后,浏览器将只对该区域进行绘制

4、调用clip会把剪辑区域设为当前剪辑区域与当前路径定义的区域的交集,故clip 的调用经常在 save 和 restore 之间,这是为了防止剪辑区域越来越小

主要是 drawImage,getImageData,putImageData,createImageData 四个 API

JS中canvas画布绘制中如何实现缩放,位移,旋转

cxt.scale(2,2);

缩放的是整个画布,缩放后,继续绘制的图形会被放大或缩小。

ctx.translate(x,y) 方法重新映射画布上的 (0,0) 位置

x: 添加到水平坐标(x)上的值

y: 添加到垂直坐标(y)上的值

发生位移后,相当于把画布的0,0坐标 更换到新的x,y的位置,所有绘制的新元素都被影响。

位移画布一般配合缩放和旋转等。

context.rotate(angle); 方法旋转当前的绘图

注意参数是弧度(PI)

如需将角度转换为弧度,请使用 degrees*Math.PI/180 公式进行计算。

html5 canvas绘图有什么用

canvas能做什么?

canvas是HTML5中的新元素,你可以使用javascript用它来绘制图形、图标、以及其它任何视觉性图像。它也可用于创建图片特效和动画。如果你掌握了完整的命令,你可以用canvas创建丰富的web应用程序。如果你想很好的使用canvas,你首先应该很好的掌握javascript。

这篇文章是一篇基础教程,你能了解一些设计方法。比如用HTML5 canvas 进行图形设计。

用HTML5 canvas设计

设计和开发一个web页面会包含很多的内容,用户首先需要有一个支持HTML canvas的浏览器。

首先创建一个HTML5文档页面,设置document type是HTMl5的;

其次在页面body区域添加一个canvas标签:

canvas/canvas

第三、给这个canvas定义一个id属性,这样方便我们在js中调用它。添加一个宽和高属性,在canvas标签中添加一个当浏览器不支持的时候显示给用户的内容。下面是列子代码:

canvas id="canvastest" width="500" height="600"

p你的浏览器不支持HTML5 canvas,请更新您的浏览器!/p

/canvas

现在我们创建了一个包含HTML5 canvas 元素的空白画布,我们将使用js和canvas元素的方法来创建我们的图像。

添加一个javascript用HTMl5 canvas的方法:

var canvasTest=document.getElementById('canvastest');//获取canvas元素;

var testcontext=canvasTest.getContext('2d');

使用javascript来创建你的画布,你可以使用矩形、圆圈和三角形,并使用线、幻灯片和渐变来创建你的设计。

下面是完成的代码:

var canvasTest=document.getElementById('canvastest');

var testcontext=canvasTest.getContext('2d');

// create rectangle

testcontext.fillStyle='rgb(0,125,125)';

testcontext.fillRect(10,10,250,180);

// create circle

testcontext.beginPath();

testcontext.arc(300, 340, 100, 0, Math.PI * 2, true);

testcontext.closePath();

testcontext.fillStyle='rgb(75,10,125)';

testcontext.fill();

testcontext.stroke();

我们可以将上面的代码加入window.onload,或者jQuery的ready方法里,当文档加载完,将会创建文明的图形。

一些HTML5 canvas 图像解决方案

用与HTML5 Canvas元素你可以开发动态绘图对象比如如可视化信息或数据图。HTML5 canvas 可以在javascript的帮助下很容易的绘制二维图形。让我们来看一下HTML5 canvas元素的一些数据图应用。

1. HumbleFinance

HumbleFinance是用js开发的一个开源的数据可视化图表,它用HTML5 canvas生成可视化图表数据,它可以用一个轴来展示任何两个二维的数据集。

地址:

2.Graphr

Graphr是一个用HTML5 canvas写的一个计算器应用,有每个图像计算器应有的基本功能。

地址:

3.用HTML5和jQuery创建的华丽的动画饼图

你可以用javascript和HTML5来创建一个交互式饼图,有华丽的动画效果。这在之前只能用flash来完成,现在也可以使用最新的HTML5技术了。

地址:

4. AwesomeJS

AwesomeJS 能够让你创建简单有用的图表,而仅需几行代码即可。这是一个基于HTML5和canvas的javascript库。

地址:

5.Ticker Plot(股票图)

Ticker Plot(股票图)是每一个在工作是使用图标的web开发人员都必备的一个图表工具。这是一个开源的项目,它使用HTML5 canvas在画布上绘制图形符号和鼠标事件。Ticker Plot(股票图)是专门为股票行情和技术分析设计的。

js+html5实现canvas绘制椭圆形图案的方法

本文实例讲述了js+html5实现canvas绘制椭圆形图案的方法,HTML5

canvas

没有画椭圆的方法,以下代码可以画出椭圆,分享给大家供大家参考,具体实现方法如下:

1、在一个隐式的画布

(将

CSS

定义成:display:none;

)

上画园。

2、将隐式画布的影像,以不同的宽高比值,画在另一个显式的画布,以使园变成椭圆。

3、进而,加进动画功能。

html

head

meta

http-equiv="Content-Type"

content="text/html;

charset=utf-8"

/

title测试颜色背景/title

script

var

ticker=0;

var

col

=

new

Array("#000000","#A52A2A","#B8860B","pink","green","yellow","red","orange","#BB008B","#8B0000");

function

drawBackground(){

var

canvasHide=document.getElementById("hide");

//隐藏的画布

var

g=canvasHide.getContext("2d");

//找出隐藏画布

hide

的画笔

g

g.clearRect(0,0,1200,800);

//清理隐藏画布

var

i=0;

do

{

//画

不同颜色

依次同心发散的园

g.beginPath();

var

grd=g.createRadialGradient(300,300,300-i*25,

300,300,265-i*25);

grd.addColorStop(0,col[(0+i+ticker)%col.length]);

grd.addColorStop(1,col[(1+i+ticker)%col.length]);

g.fillStyle=grd;

g.arc(300,300,300-i*25,0,2*Math.PI);

g.fill();

i++;

}

while(i11);

//找出显式画布

myCanvas

的画笔

gg

var

gg=document.getElementById("myCanvas").getContext("2d");

gg.clearRect(0,0,myCanvas.width,myCanvas.height);

//清理显式画布

/*

将隐式画布

hide

的园形图像,

*

600,

300

的比例,

*

画到显式画布

myCanvas,

*

结果,隐式画布

hide

的园形图像,在显式画布

myCanvas

成了椭圆

*/

gg.drawImage(canvasHide,0,0,600,300);

ticker++;

}

function

preperation(){

setInterval('drawBackground()',1000);

}

/script

style

#myCanvas{

position:absolute;

left:0px;

top:0px;

}

#hide{

display:none;

}

/style

/head

body

onLoad="preperation()"

canvas

id="myCanvas"

width="600"

height="400"

/canvas

canvas

id="hide"

width="600"

height="600"

/canvas

/body

/html

希望本文所述对大家的web程序设计有所帮助。

js的canvas应用,canvas web

本文目录一览: 1、JS之使用Canvas绘图 2、《JS原理、方法与实践》- canvas作图(六)- 坐标操作 3、Canvas 使用指南 4、JS中canvas画布绘制中如何实现缩放,位移,旋转

2023-12-08
探究JS Canvas库

2023-05-21
js和canvas实现数字滚动,canvas 滚动条

本文目录一览: 1、Unity3d如何实现滚动文本框 2、如何实现canvas的图片轮播 3、怎样canvas画布上添加滚动条,显示更多数据 4、HTML5 在CANVAS标签里面增加滚动条 Unit

2023-12-08
js结合canvas,js结合echart绘图

本文目录一览: 1、JS之使用Canvas绘图 2、如何用js新建一个canvas? 3、js+html5实现canvas绘制椭圆形图案的方法 JS之使用Canvas绘图 canvas 元素负责在页面

2023-12-08
canvas结合js画字(canvas写字)

本文目录一览: 1、js+html5实现canvas绘制镂空字体文本的方法 2、JS之使用Canvas绘图 3、如何在canvas 画图加文字 4、canvas绘制 js+html5实现canvas绘

2023-12-08
包含js调色盘canvas的词条

本文目录一览: 1、JS中canvas画布绘制中如何实现缩放,位移,旋转 2、js+html5实现canvas绘制椭圆形图案的方法 3、JS之使用Canvas绘图 4、如何用js新建一个canvas?

2023-12-08
canvas图片在路线上滚动,canvas滑动事件

2022-11-25
canvasjs图片(canvas绘制一张图片)

本文目录一览: 1、用HTML5中canvas加js代码把下面这张图片绘制出釆 2、为什么我用js创建的image在canvas里显示不出来? 3、HTML5、JS的canvas绘制图片的问题。。 4

2023-12-08
Canvas绘制箭头

2023-05-19
js中canvas是什么,Canvas是什么

2022-11-23
用Python Canvas创建视觉效果的Web应用

2023-05-12
canvas.js使用,Canvas js

2022-11-23
关于python中的canvas的信息

2022-11-13
js设置canvas宽度,canvas 自适应宽度高度

2022-11-23
canvasjs二维码,canvas生成二维码

本文目录一览: 1、html5怎么扫描二维码 2、qrcode.js怎么使二维码居中 3、jquery怎么实现url地址生成二维码实例 4、网页中如何用js实现微信中的长按识别二维码的功能吗 5、用j

2023-12-08
canvasjs歌曲,canvas音乐

本文目录一览: 1、JS之使用Canvas绘图 2、js怎么重现canvas的操作步骤 3、Canvas有哪些js库值得推荐 4、HTML5用canvas怎么实现动画效果 5、canvas动画性能好还

2023-12-08
Python Canvas:创建自定义图像,让Web页面更具

2023-05-13
canvas drawImage详解

2023-05-20
js怎么封装canvas成插件,canvas插件有什么用

本文目录一览: 1、怎样用原生JS封装自己需要的插件 2、如何用js新建一个canvas? 3、Canvas 使用指南 4、python保存网页上的canvas到本地 5、JS之使用Canvas绘图

2023-12-08
屏幕画笔-让你的创意触手可及

2023-05-18