HTML-Canvas03
颜色合成 globalCompositeOperation 属性:
//先绘制一个图形。
ctx.fillStyle = "#00ff00";
ctx.fillRect(10,10,50,50);
//设置 lobalCompositeOperation 属性。
ctx.globalCompositeOperation = "source-over";
//source-over:新图像绘制于画布已由图像上方。 //默认
//绘制一个新图像。
ctx.beginPath();
ctx.fillStyle = "#ff0000";
ctx.arc(50,50,30,0,2*Math.PI);
ctx.fill();

ctx.globalCompositeOperation = "copy";
//copy:只图像绘新图像,删除其它图像。

ctx.globalCompositeOperation = "darker";
//darker:在图形重叠的地方,其颜色由两个颜色值相减之后决定。

ctx.globalCompositeOperation = "destination-atop";
//destination-atop:画布上已有的内容只会在它和新图像重叠的地方保留。

ctx.globalCompositeOperation = "destination-in";
//destination-in:画布上已有的内容和新图像重叠的地方,保留已有的内容。

ctx.globalCompositeOperation = "destination-out";
//destination-in:画布上已有的内容和新图像不重叠的地方,保留已有的内容。

ctx.globalCompositeOperation = "destination-over";
//destinationo-ver:新图像绘制在已由图像下面。

ctx.globalCompositeOperation = "lighter";
//darker:在图形重叠的地方,其颜色由两个颜色值相加之后决定。

ctx.globalCompositeOperation = "source-atop";
//source-atop:在与已有图形重叠的地方,才显示的绘制新图像。

ctx.globalCompositeOperation = "source-ind";
//source-in:在与已有图形重叠的地方,才显示的绘制新图像 ,忽略原有图像。

ctx.globalCompositeOperation = "source-out";
//source-out:在与已有图形不重叠的地方,才显示绘制的新图像。

ctx.globalCompositeOperation = "xor";
//xor:在重叠和正常绘制的其它地方的地方,图像都为透明。

颜色反转 :
var img = new Image();
img.src="face.jpg";
img.onload = function() {
ctx.drawImage(img,0,0);
var imageData = ctx.getImageData(0,0,250,250);
var pix = imageData.data;
for(var i = 0 , n = pix.length;i<n;i += 4 ) {
pix[i] = 255-pix[i];
pix[i+1] = 255-pix[i+1];
pix[i+2] = 255 -pix[i+2];
}
ctx.putImageData(imageData,250,0);
}

阴影效果:
ctx.shadowColor = "#f00"; //设置阴影颜色
ctx.shadowBlur=10; //设置阴影的羽化量
ctx.shadowOffsetX = 20; //设置阴影X 坐标移动量
ctx.shadowOffsetY = 30; //设置阴影Y 坐标移动量
var img = new Image();
img.src= "face.jpg";
img.onload = function() {
ctx.drawImage(img,0,0);
}

自定义画板:
- 建立画板
var canvas = document.getElementById("myCanvas")
var ctx = canvas.getContext("2d");
//绘制一个黑色矩形为画板
ctx.fillStyle="black";
ctx.fillRect(0,0,600,300);
//定义一些标记
var onoff = false; //变量onoff 为判断是否按下鼠标
var oldx = -10; //由于鼠标是有大小的,这里减去 10.
var oldy = -10;
var linecolor = "white"; //线条颜色
var linw =4; //线条宽度
//添加鼠标事件 canvas.addEventListener("mousemove",draw,true); //注意鼠标事件是在画布“ canvas”上
的
canvas.addEventListener("mousedown",dowm,false);
canvas.addEventListener("mouseup",up,false);
//分别定义三个事件函数
function dowm(event) {
onoff = true; //设置为true,用于判断
oldx = event.pageX-10; //jQuery 事件(event)pageX 属性:
oldy = event.pageY-10;
}
function up() {
onoff = false;
}
function draw(event) {
if (onoff == true) {
var newx = event.pageX-10; //实时取得新的坐标
var newy = event.pageY-10;
ctx.beginPath();
ctx.moveTo(oldx,oldy);
ctx.lineTo(newx,newy);
ctx.strokeStyle = linecolor;
ctx.lineWidth = linw;
ctx.lineCap="round";
ctx.stroke();
oldx = newx; //在移动的过程中上一时新坐标变为下一时老坐标
oldy = newy;
};
}
- 完整画板与导出功能:
//添加按钮
<butto style="width:80px;background-color:yellow;"
onclick='linecolor="yellow";'>YELLOW</button> //注意这里 onclick 为单引号。
//建立以个 <img>标签,在用 toDataURL 函数导出内容
//添加代码段
function copyimage(event) {
var image_pgn_src = canvas.toDataURL("image/pgn");
document.getElementById("image_pgn").src = image_pgn_src;
}
HTML-Canvas03的更多相关文章
- HTML5 Canvas圆盘抽奖应用(适用于Vue项目)
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8& ...
随机推荐
- Mac OS X中打zip包时去除.DS_Store等指定文件
在Finder中的Compress “…”很好用,但是也有烦恼的时候,经常打包会包含进来一些.DS_Store文件,.DS_Store是苹果系统中保存当前目录基本信息的文件,包括图标的位置,显示方式等 ...
- google推出的SwipeRefreshLayout下拉刷新用法
使用如下: 1.先下载android-support-v4.jar最新版本,之前的版本是没有SwipeRefreshLayout下拉刷新控件的,如果已经更新,此步骤可省略. 2.在xml文件中引用an ...
- Linux下更好用的帮助命令—cheat
导读 Linux系统中,我们经常会用man命令来帮助查看这个命令的具体用法,man是很强大的,但是英语不好的同学用man用起来可能不那么顺手,自然而然的就出现了cheat命令,cheat命令就是通过简 ...
- lucene搜索方式(query类型)
Lucene有多种搜索方式,可以根据需要选择不同的方式. 1.词条搜索(单个关键字查找) 主要对象是TermQuery 调用方式如下: Term term=new Term(字段名,搜索关键字);Qu ...
- 关于seajs
(这些文章都是从我的个人主页上粘贴过来的,大家也可以访问我的主页 www.iwangzheng.com) 最近经常听到各种JS前缀的名称,瞬间感觉自己弱爆了,啥都没用过呢,这么下去将来怎么嫁人呢. ...
- MFC加载皮肤 转自:http://www.cctry.com/thread-4032-1-1.html
VC皮肤库SkinSharp 1.0.6.6的使用: SkinSharp又称Skin#,是Windows环境下一款强大的换肤组件.SkinSharp作为换肤控件,只需要在您的程序中添加一行代码,就能让 ...
- Sqli-LABS通关笔录-1
在第一个关卡当中还是学到些知识. 1.注释语句多试试其他的几个 2.不报错可能是前面的语句没有错误,union没有得到执行. http://127.0.0.1/sql/Less-1/index.php ...
- java对象与json对象间的相互转换
工程中所需的jar包,因为在网上不太好找,所以我将它放到我的网盘里了,如有需要随便下载. 点击下载 1.简单的解析json字符串 首先将json字符串转换为json对象,然后再解析json对象,过程如 ...
- nginx: [emerg] getpwnam(“www”) failed
在配置nginx 时提示如下错误时:nginx: [emerg] getpwnam(“www”) failed 解决方案一 在nginx.conf中 把user nobody的注释去掉既可 解决方案二 ...
- MD(d)、MT(d)编译选项的区别
1.编译选项的位置 以VS2005为例,这样子打开: 1) 打开项目的Property Pages对话框 2) 点击左侧C/C++节 3) 点击Code ...