HTML5之canvas5
来源:互联网 发布:2k18艾佛森捏脸数据 编辑:程序博客网 时间:2024/06/05 08:56
<style>
body{ background:black;}
#c1{ background:white;}
</style>
<script>
window.onload = function(){
varoC = document.getElementById('c1');
varoGC = oC.getContext('2d');
oGC.fillRect(0,0,100,100);
oGC.fillStyle= 'red';
oGC.globalAlpha = 0.5;
oGC.fillRect(50,50,100,100);
};
</script>
</head>
<body>
<canvas id="c1"width="400" height="400"></canvas>
</body>
后画的会盖在前面画的上面
源:红色的 目标:黑色的
Destination-over
Source-atop
<style>
body{ background:black;}
#c1{ background:white;}
</style>
<script>
window.onload = function(){
varoC = document.getElementById('c1');
varoGC = oC.getContext('2d');
oGC.fillRect(0,0,100,100);
oGC.fillStyle= 'red';
oGC.globalCompositeOperation= 'xor';
oGC.fillRect(50,50,100,100);
};
</script>
</head>
<body>
<canvas id="c1"width="400" height="400"></canvas>
</body>
Xor:
<style>
body{ background:black;}
#c1{ background:white;}
#img1{ background:white;}
</style>
<script>
window.onload = function(){
varoImg = document.getElementById('img1');
varoC = document.getElementById('c1');
varoGC = oC.getContext('2d');
oGC.fillRect(0,0,100,100);
oGC.fillStyle= 'red';
oGC.globalCompositeOperation= 'xor';
oGC.fillRect(50,50,100,100);
//alert(oC.toDataURL() );
oImg.src= oC.toDataURL();
};
</script>
</head>
<body>
<canvas id="c1"width="400" height="400"></canvas>
<img id="img1"src="" />
</body>
针对一个图形:
只有点到黑色圆圈范围内才会执行
<style>
body{ background:black;}
#c1{ background:white;}
#img1{ background:white;}
</style>
<script>
window.onload = function(){
varoImg = document.getElementById('img1');
varoC = document.getElementById('c1');
varoGC = oC.getContext('2d');
oGC.beginPath();
oGC.arc(100,100,50,0,360*Math.PI/180,false);
oGC.closePath();
oGC.fill();
oC.onmousedown= function(ev){
varev = ev || window.event;
varx = ev.clientX - oC.offsetLeft;
vary = ev.clientY - oC.offsetTop;
if(oGC.isPointInPath(x,y) ){
alert(123);
}
};
};
</script>
</head>
<body>
<canvas id="c1"width="400" height="400"></canvas>
<img id="img1"src="" />
</body>
对于多个图片,只针对最后一次画图片
<style>
body{ background:black;}
#c1{ background:white;}
#img1{ background:white;}
</style>
<script>
window.onload = function(){
varoImg = document.getElementById('img1');
varoC = document.getElementById('c1');
varoGC = oC.getContext('2d');
oGC.beginPath();
oGC.arc(100,100,50,0,360*Math.PI/180,false);
oGC.closePath();
oGC.fill();
oGC.beginPath();
oGC.arc(200,200,50,0,360*Math.PI/180,false);
oGC.closePath();
oGC.fill();
oC.onmousedown= function(ev){
varev = ev || window.event;
varx = ev.clientX - oC.offsetLeft;
vary = ev.clientY - oC.offsetTop;
if(oGC.isPointInPath(x,y) ){
alert(123);
}
};
};
</script>
</head>
<body>
<canvas id="c1"width="400" height="400"></canvas>
<img id="img1"src="" />
</body>
问题解决:绘制图形的操作封装成对象,每创建出来一个对象,都是独立的部分,再添加一个方法,在操作方式时,重新再绘制一次,再判断鼠标的点是否在范围内
<style>
body{ background:black;}
#c1{ background:white;}
#img1{ background:white;}
</style>
<script>
window.onload = function(){
varoImg = document.getElementById('img1');
varoC = document.getElementById('c1');
varoGC = oC.getContext('2d');
varc1 = new Shape(100,100,50);
varc2 = new Shape(200,200,50);
oC.onmousedown= function(ev){
varev = ev || window.event;
varpoint = {
x: ev.clientX - oC.offsetLeft,
y: ev.clientY - oC.offsetTop
};
c1.reDraw(point);
c2.reDraw(point);
};
c1.click= function(){
alert(123);
};
c2.click= function(){
alert(456);
};
functionShape(x,y,r){
this.x= x;
this.y= y;
this.r= r;
oGC.beginPath();
oGC.arc(this.x,this.y,this.r,0,360*Math.PI/180,false);
oGC.closePath();
oGC.fill();
}
Shape.prototype.reDraw= function(point){
oGC.beginPath();
oGC.arc(this.x,this.y,this.r,0,360*Math.PI/180,false);
oGC.closePath();
oGC.fill();
if(oGC.isPointInPath(point.x,point.y) ){
this.click();
}
};
};
</script>
</head>
<body>
<canvas id="c1"width="400" height="400"></canvas>
<img id="img1"src="" />
</body>
点击需要重绘
<style>
body{ background:black;}
#c1{ background:white;}
</style>
<script type="text/javascript"src="jCanvaScript.1.5.18.min.js"></script>
<script>
window.onload = function(){
varoC = document.getElementById('c1');
varoGC = oC.getContext('2d');
jc.start('c1',true); //第二个参数:代表重绘的意思
//jc.rect(100,100,50,50,'#ff0000',1);
jc.circle(100,100,50,'#ff0000',1).click(function(){
alert(123);
});
jc.start('c1');
};
</script>
</head>
<body>
<canvas id="c1"width="400" height="400"></canvas>
</body>
拖拽
<style>
body{ background:black;}
#c1{ background:white;}
</style>
<script type="text/javascript"src="jCanvaScript.1.5.18.min.js"></script>
<script>
window.onload = function(){
varoC = document.getElementById('c1');
varoGC = oC.getContext('2d');
jc.start('c1',true); //第二个参数:代表重绘的意思
//jc.rect(100,100,50,50,'#ff0000',1);
jc.circle(100,100,50,'#ff0000',1).draggable();
jc.start('c1');
};
</script>
</head>
<body>
<canvas id="c1"width="400" height="400"></canvas>
</body>
点击变色:通过ID获取需变色的物体
<style>
body{ background:black;}
#c1{ background:white;}
</style>
<script type="text/javascript"src="jCanvaScript.1.5.18.min.js"></script>
<script>
window.onload = function(){
varoInput = document.getElementById('input1');
varoC = document.getElementById('c1');
varoGC = oC.getContext('2d');
jc.start('c1',true); //第二个参数:代表重绘的意思
//jc.rect(100,100,50,50,'#ff0000',1);
jc.circle(100,100,50,'#ff0000',1).id('c1');
jc.start('c1');
oInput.onclick= function(){
jc('#c1').color('#ffff00');
};
};
</script>
运动
<style>
body{ background:black;}
#c1{ background:white;}
</style>
<script type="text/javascript"src="jCanvaScript.1.5.18.min.js"></script>
<script>
window.onload = function(){
varoInput = document.getElementById('input1');
varoC = document.getElementById('c1');
varoGC = oC.getContext('2d');
jc.start('c1',true); //第二个参数:代表重绘的意思
//jc.rect(100,100,50,50,'#ff0000',1);
jc.circle(100,100,50,'#ff0000',1).id('c1');
jc.start('c1');
oInput.onclick= function(){
jc('#c1').color('#ffff00').animate({x:200,y:200,radius:5},2000);
};
};
</script>
- HTML5之canvas5
- Canvas5——路劲应用绘制动画效果初级
- HTML5之我见
- HTML5之时钟
- html5 之 output标签
- 捣鼓HTML5之表单
- Html5 之 Canvas
- HTML5研究之canvas
- HTML5 WebSocket之HelloWorld
- HTML5之Worker用法
- HTML5之拖动图片
- HTML5之Worker Thread
- HTML5之Worker用法
- HTML5之Worker Thread
- HTML5之Worker用法
- HTML5之Worker用法
- HTML5之表单示例
- HTML5之地理位置
- 利用事件分发机制解决ScrollView嵌套ListView滑动冲突
- Oracle 查询优化的基本准则详解
- Eclipse集成Tomcat 报错Tomcat 7.x JDK name
- 优先级队列:PriorityQueue
- c语言之IO使用文件分割
- HTML5之canvas5
- 针对线程学习过程中遇到的问题或者是学习经验笔记
- 原创XListView
- SDOS_SdoInfoInd
- CocoaPods安装及使用
- hdu_5293_Tree chain problem(DFS序+树形DP+LCA)
- 【城会玩】hrbust 1341Who will be punished【思维】
- 一个有序的二维数组,自上而下,自左至右都是升序,判断输入的整数是否在数组中
- Android EditText的TextWatcher监听回调参数详解