Canvas_可涂抹画布

最近做一个项目,其中有个小功能就是刮刮乐!

利用到了HTML5画布 canvas

<html>
<head>
    <title>Canvas_可涂抹画布</title>
    <style>#canvas{background:url(http://g.hiphotos.baidu.com/image/pic/item/1f178a82b9014a9058672000aa773912b31bee36.jpg);height:300px;width:200px;}</style>
    <script type="text/javascript">
        /**事件绑定方法**/
        function addEvent(object,eventType,fn){
            if(object.attachEvent){                
                object.attachEvent(‘on‘+eventType,fn); //ie绑定事件
            }else if(object.addEventListener){
                object.addEventListener(eventType,fn,false); //谷歌与火狐绑定事件
            }
        }
        /**阻止默认事件**/
        function preDef(e){
            var e=e || window.event;
            if(e.preventDefault){
                e.preventDefault();
            }else{
                e.returnValue=false;
            }
        }
        
                
        addEvent(window,‘load‘,function(){
            /**阻止网页拖动**/
            addEvent(document,"tounchmove",function(){
                preDef(e);
            });
            
            /**canvas 画布**/
            //var canvasElement=document.getElementById("canvas").getContext("2d");
            function createCanvas(parent,width,height){
                canvasElement=document.createElement("canvas");
                canvasContext=canvasElement.getContext("2d");
                canvasElement.width= width || 320;
                canvasElement.height= height || 480;
                canvasElement.id="canvasTag";
                parent.appendChild(canvasElement);
                 
            }
            
            
            var canvasParent=document.getElementById("canvas");
            //alert(createCanvas(canvasParent,"500","500"));
            
            function init(drawObj,width,height,fillColor){
                /**实例化画布**/
                createCanvas(drawObj,width,height);
                
                /**绘制已填充矩形**/
                var ctx=canvasContext;
                ctx.fillStyle=fillColor;
                ctx.fillRect(0,0,width,height);
                
                ctx.fillCircle = function(x, y, radius, fillColor) {
                  this.fillStyle = fillColor;
                  this.beginPath();
                  this.moveTo(x, y);
                  this.arc(x, y, radius, 0, Math.PI * 2, false);
                  this.fill();
                };
                
                //做效果测试只用了mousemove 大家可以做兼容移动设备 当然首先得做平台的navigator.userAgent 判断
                addEvent(canvasElement,"mousemove",function(e){
                    var x = e.pageX - this.offsetLeft;
                    var y = e.pageY - this.offsetTop;
                    var radius = 20;
                    var fillColor = ‘#ff0000‘;
                    ctx.globalCompositeOperation = ‘destination-out‘;
                    ctx.fillCircle(x, y, radius, fillColor);
                });
                
            }
            init(canvas,"200","300","#ccc");
        });
        
    </script>
</head>
<body>
    <div id="canvas"></div>
<body>

</html>

时间: 2024-08-10 00:06:40

Canvas_可涂抹画布的相关文章

实现一个涂抹擦除效果

涂抹效果还是满常见的效果. 要做涂抹,首先要存一张中间贴图作为mask. 然后需要两个shader,一个做mask一个做混合. MaskShader: Shader "Unlit/MaskShader" { Properties { _MainTex ("Texture", 2D) = "white" {} _MaskDecalTex("Mask Decal Texture", 2D) = "white"

Canvas画布

 canvas 使用 <canvas> 元素不是非常难但你需要一些基本的HTML和JavaScript知识.<canvas> 元素不被一些老的浏览器所支持,但是所有的主流浏览器的新近版本都支持.Canvas 的默认大小为300像素×150像素(宽×高,像素的单位是px).但是,可以使用HTML的高度和宽度属性来自定义Canvas 的尺寸.为了在 Canvas 上绘制图形,我们使用一个JavaScript上下文对象,它能动态创建图像( creates graphics on the

【Android】自己定义View、画布Canvas与画笔Paint

安卓自己定义View事实上非常easy. 这个View能够像<[Android]利用Java代码布局,button加入点击事件>(点击打开链接)一样.利用Java代码生成一系列的组件. 也能够配合画布Canvas与画笔Paint来使用. 以下用一个样例来说明.例如以下图,有一个自己定义布局View.里面摆放着,利用画布Canvas与画笔Paint绘制出来的蓝色正方形与红色文字. 在res\layout\activity_main.xml中.直接像摆放安卓固有组件一样,能够直接使用这个我定义组件

HTML5之canvas-1画布矩形

绘制步骤 获取canvas对象 var oCanvas = document.getElementById("canvas"); 取得上下文context var context = oCanvas.getContext("2d"); 绘制图形 根据需求选择方法 绘制长方形/边框/填充色彩 Context.lineWidth=1; Context.fillRect(x,y,width,height); Context.strokeRect(x,y,width,hei

c# wpf 游戏笔记 画布实例

<c#  wpf  游戏笔记一  画布实例DispatcherTimer> Rectangle rect; //创建一个方块作为演示对象 rect = new Rectangle(); rect.Fill = new SolidColorBrush(Colors.Red); //设置画布canvas的背景设 rect.Width = 50; rect.Height = 50; rect.RadiusX = 5; rect.RadiusY = 5;//图像的一个50*50象素 圆角5*5红色的方

HTML5 画布

HTML5 Canvas 画布1.Canvas是一个块级标签.自带width: height: 属性 不用再CSS上写,不用写PX: getContext:获取上下文,只有canvas才有的属性:可以称之为画笔: 2.var cs=document.getElementById("cs");获取画布 var context=cs.getContext("2d");获取画笔 3.绘制矩形 带填充内容的 context.fillRect(10,10,100,50)x,y

&lt;Android&gt;画布的移动和翻转

Android画布翻转是个利器,尤其在图像处理上,不需要数组的转置颠倒一堆线性变化就可以轻松实现原点的改变. 就像酱紫,开始的时候,画布妹妹是和显示区哥哥重叠在一起的,默契的就像一个人一样,三观一致,出发点统一在左上角.我们画的图像都是在画布上的,呈现在显示区域中.此时在画布上画一个进度bar是这个效果的. 如果想要得到一个竖向的bar,那我们就来翻转画布,首先逆时针翻转90°,得到下图 这时画布妹妹和显示区哥哥的世界已经不是同一个坐标系了 它们的世界有了分歧,为了使它们看到的世界是同一个世界,

【C语言探索之旅】 第三部分第二课:SDL开发游戏之创建窗口和画布

内容简介 1.第三部分第二课: SDL开发游戏之创建窗口和画布 2.第三部分第三课预告: SDL开发游戏之显示图像 第三部分第二课:SDL开发游戏之创建窗口和画布 在上一课中,我们对SDL这个开源库做了介绍,也带大家配置了SDL的开发环境.请大家按照上一课的步骤创建一个SDL工程,能够初步运行. 如果遇到问题,可以百度,Google相关平台SDL的配置.或者联系小编. 当然了,有些朋友可能会说开发C语言游戏还可以用GTK+这个库,但是个人认为GTK+没有SDL那么适合开发游戏,其创建图形界面的能

htm5拖放和画布

拖放 拖放是一种常见的特性,即抓取对象以后拖到另一个位置. 在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. 首先,为了使元素可拖动,把 draggable 属性设置为 true ondragover 事件规定在何处放置被拖动的数据. 当放置被拖数据时,会发生 drop 事件. <!DOCTYPE html><html><head>   <meta charset="utf-8">   <title></ti