javaScript画布上实现(画笔大小颜色橡皮的实例)

  

        & lt; !DOCTYPE html>   & lt; html>   & lt; head>   & lt;元charset=" utf - 8 "/比;   & lt; title> & lt;/title>   & lt;/head>   & lt; body>   & lt; div>   & lt; div>      & lt; !——& lt;输入type="按钮" id=翱拧眝alue=" https://www.yisu.com/zixun/open "祝辞& lt;/input>   & lt;输入类型="按钮" id=罢取眝alue=" https://www.yisu.com/zixun/save "祝辞& lt;/input>& lt;输入类型="按钮" id="颜色" value=" https://www.yisu.com/zixun/color "祝辞& lt;/input>——比;   & lt;输入类型="按钮" value=" https://www.yisu.com/zixun/size "祝辞& lt;/input>   & lt;输入类型="文本" id=按笮 弊4? lt;/input>   & lt;输入类型="按钮" id=扒逦奔壑?" https://www.yisu.com/zixun/clear "祝辞& lt;/input>   & lt;输入类型="按钮" id="橡皮" value=" https://www.yisu.com/zixun/eraser "祝辞& lt;/input>   & lt;选择id=靶巫础北?   & lt;选项值=" https://www.yisu.com/zixun/99 "祝辞shape   & lt;选项值=" https://www.yisu.com/zixun/1 "祝辞rectangle   & lt;选项值=" https://www.yisu.com/zixun/0 "祝辞circle   & lt;选项值=" https://www.yisu.com/zixun/2 "祝辞line   & lt;/select>         & lt;输入id="颜色" type="颜色"/比;   & lt;/div>   & lt;帆布id=" myCanvas "宽度=" 800 "高度=" 500 "祝辞& lt;/canvas>   & lt;/div>   & lt;/body>   & lt;脚本语言=癑avaScript”比;   var世鹏科技电子=99;//0是圆的;1是矩形   var orignalX orignalY;//鼠标的坐标   var lastX lastY;//最后一个鼠标的坐标位置   var isMouseDown=false;//鼠标按下旗   var myCanvas=. getelementbyid (“myCanvas”);   var=myCanvas.getContext上下文(2 d);   var=myCanvas宽度。宽度,高度=myCanvas.height;   去年帆布var数据;//存储的内容   上下文。strokeStyle=昂谏?   context.strokeWidth=1;   上下文。线宽=1;         . getelementbyid(的颜色)。onchange=function () {   上下文。strokeStyle=this.value   };      函数doEraser () {   上下文。strokeStyle=鞍住?   世鹏科技电子=2;   }   函数sizeChange () {      上下文。线宽=方法(. getelementbyid(“大小”)value);      }      函数shapeChange () {   上下文。strokeStyle=昂谏?   var myselect=. getelementbyid(“形状”);   var=myselect指数。selectedIndex;   var myvalue=https://www.yisu.com/zixun/myselect.options(指数)value;   var mytext=myselect.options。text(指数);   世鹏科技电子=方法(括号);      }            函数myCanvasMouseDown(事件){//event.preventDefault ();      如果事件。按钮==0){   orignalX=event.offsetX;   orignalY=event.offsetY;   context.moveTo (orignalX orignalY);   data=上下文。getImageData(0, 0,宽度、高度);   isMouseDown=true;      }   }      函数myCanvasMouseMove(事件){   如果(isMouseDown) {//event.preventDefault ();      开关(世鹏科技电子){   例0:   context.clearRect(0, 0,宽度、高度);   context.putImageData(数据,0,0);   lastX=event.offsetX;   lastY=event.offsetY;   context.beginPath ();   context.arc (orignalX + (lastX-orignalX)/2, orignalY + (lastY-orignalY)/2, Math.abs (lastX-orignalX)/2, 0,数学。π* 2,真实);   context.stroke ();   context.closePath ();   打破;   案例1:   context.clearRect(0, 0,宽度、高度);   context.putImageData(数据,0,0);   lastX=event.offsetX;   lastY=event.offsetY;   上下文。strokeRect (orignalX orignalY、lastX-orignalX lastY-orignalY);   打破;   案例2:   lastX=event.offsetX;   lastY=event.offsetY;   上下文。画线(lastX lastY);//根据鼠标路径绘画   context.stroke ();//立即渲染   打破;      }   }   }      函数myCanvasMouseUp(事件){   如果(isMouseDown) {//event.preventDefault ();      context.clearRect(0, 0,宽度、高度);   context.putImageData(数据,0,0);   lastX=event.offsetX;   lastY=event.offsetY;   开关(世鹏科技电子){   例0:   context.beginPath ();   context.arc (orignalX + (lastX-orignalX)/2, orignalY + (lastY-orignalY)/2, Math.abs (lastX-orignalX)/2, 0,数学。π* 2,真实);   context.stroke ();   context.closePath ();   打破;   案例1:   context.beginPath ();   上下文。strokeRect (orignalX orignalY、lastX-orignalX lastY-orignalY);   context.closePath ();   打破;   案例2:      上下文。画线(lastX lastY);//根据鼠标路径绘画   context.stroke ();//立即渲染      打破;   }   isMouseDown=false;   lastX=零;   lastY=零;   orignalX=零;   orignalY=零;   data=上下文。getImageData(0, 0,宽度、高度);   context.beginPath ();   context.clearRect(0, 0,宽度、高度);   context.putImageData(数据,0,0);   context.closePath ();   }   }   myCanvas。addEventListener (“myCanvasMouseDown mousedown”,假);   myCanvas。addEventListener (“myCanvasMouseMove mousemove”,假);   myCanvas。addEventListener (“myCanvasMouseUp mouseup”,假);   & lt;/script>      & lt;/html>

javaScript画布上实现(画笔大小颜色橡皮的实例)