\u524d\u8a00:<\/p> \n
\u3000\u3000canvas\u53ef\u4ee5\u5355\u72ec\u7b97\u4e3a\u524d\u7aef\u7684\u4e00\u5927\u77e5\u8bc6\u6a21\u5757, \u4eca\u5929\u5c31\u7814\u7a76\u4e00\u4e0b.<\/p> \n
\u3000\u3000\u5148\u505a\u4e0b\u524d\u6587\u94fa\u57ab:<\/p> \n
\u3000\u3000\u3000\u3000\u2460\u521b\u5efacanvas<\/p> \n
<<\/span>canvas <\/span>id<\/span>="myCanvas"<\/span> width<\/span>="200"<\/span> height<\/span>="100"<\/span> style<\/span>="border:1px solid #000000;"<\/span>><\/<\/span>canvas<\/span>><\/span><\/pre> \n <\/div> \n \u3000\u3000\u3000\u3000\u2461\u83b7\u53d6canvas<\/p> \n
\n var<\/span> cavs = document.getElementById("cavs"); \/\/<\/span>\u83b7\u53d6canvas<\/span>\r\n var<\/span> ctx = cavs.getContext("2d"); \/\/<\/span>\u53ef\u4ee5\u7406\u89e3\u4e3a\u751f\u6210\u4e00\u4e2a2d\u753b\u7b14<\/span>\r\n ctx.moveTo(100, 100); \/\/<\/span>\u843d\u7b14\u70b9<\/span>\r\n ctx.lineTo(200, 200); \/\/<\/span>\u7ed3\u675f\u70b9<\/span><\/pre> \n <\/div> \n \u3000\u3000\u3000\u3000\u2462\u5e38\u7528\u6837\u5f0f<\/p> \n
\n ctx.strokeStyle = "#f00" \/\/<\/span>\u7ebf\u6761\u7684\u989c\u82722<\/span>\r\n ctx.lineWidth = 10; \/\/<\/span>\u7ebf\u6761\u7c97\u7ec6<\/span><\/pre> \n <\/div> \n \u3000\u3000\u3000\u3000\u2463\u7ed8\u5236\u7ebf\u6761<\/p> \n
\n \u3000\u3000\u3000\u3000\u3000 ctx.stroke(); \/\/<\/span>\u7ed8\u5236\u7ebf\u6761<\/span><\/pre> \n <\/div> \n \u3000\u3000\u3000\u3000\u2464\u586b\u5145\u56fe\u6848<\/p> \n
\n \u3000\u3000\u3000\u3000\u3000ctx.fillStyle = "yellow"; \/\/<\/span>\u586b\u5145\u989c\u8272
<\/span>\u3000\u3000\u3000\u3000\u3000ctx.fill(); <\/span>\/\/<\/span>\u8fdb\u884c\u586b\u5145<\/span><\/pre> \n <\/div> \n \u3000\u3000\u3000\u3000\u2465\u5f00\u59cb\u7ed3\u675f<\/p> \n
\n ctx.beginPath(); \/\/<\/span>\u5f00\u59cb<\/span>\r\n ctx.closePath(); \/\/<\/span>\u7ed3\u675f<\/span><\/pre> \n <\/div> \n \u3000\u3000\u3000\u3000\u2466\u5176\u4ed6<\/p> \n
\n var<\/span> img = ctx.getImageData(x, y, width, height); \/\/<\/span>\u622a\u53d6canvas\u4e2d\u56fe\u6848<\/span>\r\n ctx.putImageData(img, width, height) \/\/\u5c06img<\/span>\u653e\u5230canvas\u4e2d<\/span>\r\n ctx.clearRect(x,y,canvas.width,canvas.height) \/\/<\/span>\u6e05\u9664\u753b\u5e03<\/span><\/pre> \n <\/div> \n <\/p> \n
\u6b63\u6587:<\/p> \n
\u3000\u3000\u8bf4\u518d\u591a\u4e5f\u6ca1\u7528, \u6700\u7ec8\u8fd8\u662f\u8fdb\u884c\u5b9e\u6218, \u7ec8\u4e8e\u8fdb\u5165\u6b63\u6587\u4e86;<\/p> \n
\u3000\u3000HTML\u90e8\u5206<\/p> \n
\n <<\/span>div <\/span>class<\/span>="wrapper"<\/span>><\/span>\r\n <<\/span>canvas <\/span>id<\/span>="cavs"<\/span> width<\/span>="1000"<\/span> height<\/span>="500"<\/span>><\/<\/span>canvas<\/span>><\/span>\r\n <<\/span>ul <\/span>class<\/span>="btn-list"<\/span>><\/span>\r\n <<\/span>li<\/span>><<\/span>input <\/span>type<\/span>="color"<\/span> id<\/span>="colorBoard"<\/span>><\/<\/span>li<\/span>><\/span>\r\n <<\/span>li<\/span>><<\/span>input <\/span>type<\/span>="button"<\/span> id<\/span>="cleanBoard"<\/span> value<\/span>="\u6e05\u5c4f"<\/span>><\/<\/span>li<\/span>><\/span>\r\n <<\/span>li<\/span>><<\/span>input <\/span>type<\/span>="button"<\/span> id<\/span>="eraser"<\/span> value<\/span>="\u6a61\u76ae"<\/span>><\/<\/span>li<\/span>><\/span>\r\n <<\/span>li<\/span>><<\/span>input <\/span>type<\/span>="button"<\/span> id<\/span>="rescind"<\/span> value<\/span>="\u64a4\u9500"<\/span>><\/<\/span>li<\/span>><\/span>\r\n <<\/span>li<\/span>><<\/span>input <\/span>type<\/span>="range"<\/span> id<\/span>="lineRuler"<\/span> value<\/span>="\u7ebf\u6761"<\/span> min<\/span>="1"<\/span> max<\/span>="30"<\/span>><\/<\/span>li<\/span>><\/span>\r\n <\/<\/span>ul<\/span>><\/span>\r\n<\/<\/span>div<\/span>><\/span><\/pre> \n <\/div> \n \u3000\u3000css\u90e8\u5206<\/p> \n
\n *<\/span>{\r\n padding<\/span>: 0<\/span>;\r\n margin<\/span>: 0<\/span>;\r\n}\r\n.wrapper<\/span>{\r\n margin<\/span>: 15px<\/span>;\r\n}\r\n.wrapper canvas<\/span>{\r\n border<\/span>:1px solid #000<\/span>;\r\n border-radius<\/span>: 25px<\/span>;\r\n box-shadow<\/span>:10px 10px 5px #999<\/span>;\r\n margin-bottom<\/span>: 20px<\/span>;\r\n}\r\n.wrapper ul<\/span>{\r\n width<\/span>: 1000px<\/span>;\r\n text-align<\/span>: center<\/span>;\r\n}\r\n.wrapper ul li<\/span>{\r\n display<\/span>: inline-block<\/span>;\r\n margin-left<\/span>: 40px<\/span>;\r\n}\r\n.wrapper ul li input<\/span>{\r\n display<\/span>: block<\/span>;\r\n background<\/span>: #ddd<\/span>;\r\n color<\/span>: #000<\/span>;\r\n border-radius<\/span>: 25px<\/span>;\r\n border<\/span>:none<\/span>;\r\n padding<\/span>: 10px 20px<\/span>;\r\n font-size<\/span>: 15px<\/span>;\r\n transition-duration<\/span>: 0.2s<\/span>;\r\n}\r\n.wrapper ul li input:hover<\/span>{\r\n background<\/span>: #999<\/span>;\r\n border<\/span>: 1px solid #f00<\/span>;\r\n box-shadow<\/span>: 0 12px 16px 0 rgba(0,0,0,0.3)<\/span>;\r\n}<\/pre> \n <\/div> \n \u3000\u3000js\u90e8\u5206<\/p> \n
\n function<\/span> ID(str) {\r\n <\/span>return<\/span> document.getElementById(str);\r\n}\r\n\r\n<\/span>var<\/span> darwingLineObj = {\r\n cavs:<\/span>this<\/span>.ID("canvas"),\r\n color:<\/span>this<\/span>.ID("color"),\r\n clear:<\/span>this<\/span>.ID("clear"),\r\n eraser:<\/span>this<\/span>.ID("eraser"),\r\n rescind:<\/span>this<\/span>.ID("rescind"),\r\n weight:<\/span>this<\/span>.ID("weight"),\r\n bool:<\/span>false<\/span>,\r\n arrImg:[],\r\n <\/span>\/\/<\/span>\u521d\u59cb\u5316<\/span>\r\n init:function<\/span>(){\r\n <\/span>this<\/span>.draw();\r\n },\r\n draw:<\/span>function<\/span>(){ \r\n <\/span>var<\/span> cavs = this<\/span>.cavs,\r\n self <\/span>= this<\/span>,\r\n ctx <\/span>= cavs.getContext("2d");\r\n ctx.lineWidth <\/span>= 15;\r\n ctx.lineCap <\/span>= "round"; \/\/<\/span>\u7ebf\u6761\u59cb\u7ec8\u7684\u6837\u5f0f<\/span>\r\n ctx.lineJoin = "round"; \/\/<\/span>\u8f6c\u5f2f\u7684\u5706\u89d2<\/span>\r\n\r\n var<\/span> c_x = cavs.offsetLeft, \/\/<\/span>\u5143\u7d20\u8ddd\u79bb\u5de6\u4fa7\u7684\u4f4d\u7f6e<\/span>\r\n c_y = cavs.offsetTop; \/\/<\/span>canvas\u8ddd\u79bb\u9876\u90e8<\/span>\r\n