html5 canvas 笔记五(合成与裁剪)

组合 Compositing

globalCompositeOperation

syntax:



globalCompositeOperation = type

注意:下面所有例子中,蓝色方块是先绘制的,即“已有的 canvas 内容”,红色圆形是后面绘制,即“新图形”。

source-over  这是默认设置,新图形会覆盖在原有内容之上。

destination-over  会在原有内容之下绘制新图形。

source-in  新图形会仅仅出现与原有内容重叠的部分。其它区域都变成透明的。

destination-in  原有内容中与新图形重叠的部分会被保留,其它区域都变成透明的。

source-out  结果是只有新图形中与原有内容不重叠的部分会被绘制出来。

destination-out  原有内容中与新图形不重叠的部分会被保留。

source-atop  新图形中与原有内容重叠的部分会被绘制,并覆盖于原有内容之上。

destination-atop  原有内容中与新内容重叠的部分会被保留,并会在原有内容之下绘制新图形

lighter  两图形中重叠部分作加色处理。

darker  两图形中重叠的部分作减色处理。

xor  重叠的部分会变成透明。

copy  只有新图形会被保留,其它都被清除掉。

裁切路径 Clipping paths

裁切路径和普通的 canvas 图形差不多,不同的是它的作用是遮罩,用来隐藏没有遮罩的部分。

syntax



clip()

实例:

 1 function draw() {
 2   var ctx = document.getElementById(‘canvas‘).getContext(‘2d‘);
 3   ctx.fillRect(0,0,150,150);
 4   ctx.translate(75,75);
 5
 6   // Create a circular clipping path
 7   ctx.beginPath();
 8   ctx.arc(0,0,60,0,Math.PI*2,true);
 9   ctx.clip();
10
11   // draw background
12   var lingrad = ctx.createLinearGradient(0,-75,0,75);
13   lingrad.addColorStop(0, ‘#232256‘);
14   lingrad.addColorStop(1, ‘#143778‘);
15
16   ctx.fillStyle = lingrad;
17   ctx.fillRect(-75,-75,150,150);
18
19   // draw stars
20   for (var j=1;j<50;j++){
21     ctx.save();
22     ctx.fillStyle = ‘#fff‘;
23     ctx.translate(75-Math.floor(Math.random()*150),
24                   75-Math.floor(Math.random()*150));
25     drawStar(ctx,Math.floor(Math.random()*4)+2);
26     ctx.restore();
27   }
28
29 }
30 function drawStar(ctx,r){
31   ctx.save();
32   ctx.beginPath()
33   ctx.moveTo(r,0);
34   for (var i=0;i<9;i++){
35     ctx.rotate(Math.PI/5);
36     if(i%2 == 0) {
37       ctx.lineTo((r/0.525731)*0.200811,0);
38     } else {
39       ctx.lineTo(r,0);
40     }
41   }
42   ctx.closePath();
43   ctx.fill();
44   ctx.restore();
45 }
时间: 2024-10-28 21:18:15

html5 canvas 笔记五(合成与裁剪)的相关文章

html5 canvas画布上合成

source-over 默认.在目标图像上显示源图像. source-atop 在目标图像顶部显示源图像.源图像位于目标图像之外的部分是不可见的. source-in 在目标图像中显示源图像.只有目标图像内的源图像部分会显示,目标图像是透明的. source-out 在目标图像之外显示源图像.只会显示目标图像之外源图像部分,目标图像是透明的. destination-over 在源图像上方显示目标图像. destination-atop 在源图像顶部显示目标图像.源图像之外的目标图像部分不会被显

HTML5学习笔记五:html5表单

表单是页面上非常重要的一块内容,用户可输入的大部分内容都是在表单元素中完成的,与后台的交互大多数也是通过点击表单中的按钮. 一.新增的元素和属性 1.新增属性: 1.1 form属性:页面中的任何元素指定form属性,属性值为相应表单的id,该元素就属于指定表单了:只有Opera 10支持. 1.2 placeholder属性:文本框处于未输入状态且未获取光标焦点时,模糊显示输入提示文字:Safari 4,chrome3,firefox4 1.3 autofocus属性:打开页面时,有该属性的控

html5 canvas 笔记二(添加样式和颜色)

色彩 Colors fillStyle = color 设置图形的填充颜色. strokeStyle = color 设置图形轮廓的颜色. 透明度 Transparency globalAlpha = transparency value 1 // globalAlpha 示例 2 ctx.fillStyle = '#FD0'; 3 ctx.globalAlpha = 0.2; 4 5 // rgba() 示例 6 ctx.strokeStyle = "rgba(255,0,0,0.5)&quo

Html5 Canvas笔记(3)-Canvas状态

p{ font-size: 15px; text-indent: 2em; } .alexrootdiv>div{ background: #eeeeee; border: 1px solid #aaa; width: 99%; padding: 5px; margin: 1em 0 1em 0; } .alexrootdiv>div>p:first-of-type,.alextitlep{ font-size: 18px; font-weight: bold; color: red;

Html5 Canvas笔记(2)-Canvas绘图

用Canvas API绘图,需要画图形的边线并设置内部区域填充,边线英文语法对应stroke,填充对应fill,在后面我们会频繁看到这2个英文单词的出现.Canvas API内置的形状绘图函数比较少,可以完成绘制矩形Rect.弧形Arc,也可以画贝塞尔曲线bezierCurver.quadraticCurve.下面我们一个一个的来说. 画线-Line 1 function drawScreen(){ 2 context.strokeStyle='black'; 3 context.lineWid

html5 canvas 学习笔记(一)

一.canvas元素API canvas元素并未提供很多API,实际上他只提供了两个属性与三个方法: 1.canvas元素属性 width 属性:与 height 属性: canvas元素绘图表面的宽度,在默认状况下,浏览器会将canvas元素大小设定成与绘图表面大小一致,然而如果在css中覆写了元素大小,那么浏览器则会将绘图表面进行缩放,使之符合元素尺寸.其值为非负整数,默认值为300. 2.canvas元素方法 getContext()方法: 返回与该canvas元素相关的绘图环境对象,每个

HTML5 Canvas知识点学习笔记

canvas ① 主要作用:绘制矢量图 ② 矢量图图形(路径)-(ILL) 位图图像(像素点)- PS中图像都是位图 ③ Canvas 能够制作动画,但是不是为了制作动画而生的也能够制作游戏.主要为了绘图而生. ④ 能够设置宽高 推荐样式写在style:Canvas 相当于是一个绘制图形的容器,并没有绘制功能,需要借助JS(脚本)实现绘制功能. 思路: getContext( ) var context = cnvas.getContext('2d'); // 图像的绘制 // 开始      

利用html5 canvas实现纯前端上传图片的裁剪

今天跟大家分享一个前端裁剪图片的方法.许多网站都有设置用户头像的功能,用户可以选择一张本地的图片,然后用网站的裁剪工具进行裁剪,然后设置大小,位置合适的头像.当然,网上也有一些用js写的诸如此类裁剪的插件,但是有许多都是前端将图片的一些裁剪参数(如坐标)传给后台,有java程序员进行真正的图片裁剪.今天自己研究了一些,做了一个纯前端裁剪的demo,如下: 1.html部分:<div> <input type="file" id="imgFile"&

HTML5项目笔记3:使用Canvas设计离线系统的Logo

HTML5 的Cavans API可以动态来展示图形.图表.图像以及动画,我们的这个离线系统中,主要用来设计Logo用的.在网页上使用Canvas的时,他会创建一块矩形区域,默认情况下宽为300像素,高为150像素,当然,可以自定义. 因为我们离线系统主要职责用于在离线的情况下的工作系统,如在上面写工作日志,工作计划,和保存项目的评估数据:在网络在线的情况下与服务器交互,并将数据保存到Server的数据库中.所以我们的这个离线系统被命名为OFLMAIL,我们就根据这个名字来设计Logo. can