//画布封装函数 function canvas(o){ o.dom.innerHTML=""; var c=document.createElement("canvas"); c.width=o.dom.offsetWidth; c.height=o.dom.offsetHeight; o.dom.appendChild(c); var ctx=c.getContext("2d"); //阴影水平距离 if(!!o.shadowOffsetX) ctx.shadowOffsetX=o.shadowOffsetX; //阴影垂直距离 if(!!o.shadowOffsetY ) ctx.shadowOffsetY =o.shadowOffsetY ; //阴影扩张 if(!!o.shadowBlur) ctx.shadowBlur=o.shadowBlur; //阴影颜色 if(!!o.shadowColor) ctx.shadowColor=o.shadowColor; if(!!o){ for (var i = 0; i < o.s.length; i++) { ctx.beginPath(); //渐变模式设置 if(!!o.s[i].fillLinear){ var grd = ctx.createLinearGradient(o.s[i].fillLinear[0][0], o.s[i].fillLinear[0][1], o.s[i].fillLinear[1][0], o.s[i].fillLinear[1][1]); }else if(!!o.s[i].fillRadial){ var grd = ctx.createRadialGradient( o.s[i].fillRadial[0][0], o.s[i].fillRadial[0][1], o.s[i].fillRadial[0][2], o.s[i].fillRadial[1][0], o.s[i].fillRadial[1][1], o.s[i].fillRadial[1][2]); } if(!!o.s[i].lineLinear){ var grd1 = ctx.createLinearGradient(o.s[i].lineLinear[0][0], o.s[i].lineLinear[0][1], o.s[i].lineLinear[1][0], o.s[i].lineLinear[1][1]); } //边框或线条宽度 if(!!o.s[i].width){ ctx.lineWidth=o.s[i].width; }; //边框或线条颜色 if(!!o.s[i].color){ ctx.strokeStyle=o.s[i].color; }; //边框或线条线性渐变 if(!!o.s[i].lineLinearcolor){ for (var n = 0; n < o.s[i].lineLinearcolor.length; n++) { grd1.addColorStop(o.s[i].lineLinearcolor[n][0], o.s[i].lineLinearcolor[n][1]); } ctx.strokeStyle = grd1; }; //填充色及渐变 if(!!o.s[i].fillcolor){ for (var n = 0; n < o.s[i].fillcolor.length; n++) { grd.addColorStop(o.s[i].fillcolor[n][0], o.s[i].fillcolor[n][1]); } ctx.fillStyle = grd; }else{ ctx.fillStyle = o.s[i].fillbgcolor; }; //创建矩形或圆或线条或文本 transform(ctx,o.s[i]); if(!!o.s[i].arc){ ctx.arc(o.s[i].arc[0],o.s[i].arc[1],o.s[i].arc[2],o.s[i].arc[3],o.s[i].arc[4]); }else if(!!o.s[i].rect){ ctx.rect(o.s[i].rect[0],o.s[i].rect[1],o.s[i].rect[2],o.s[i].rect[3]); }else if(!!o.s[i].line){ //设置线条端点样式,可选值round(圆形线帽),square(方形线帽),butt(平直) if(!!o.s[i].tou) ctx.lineCap=o.s[i].tou; //设置两条线相交拐角类型,bevel(斜角),round(创建圆角),miter(尖角) if(!!o.s[i].jiao) ctx.lineJoin=o.s[i].jiao; ctx.moveTo(o.s[i].line[0][0],o.s[i].line[0][1]); //中间点 for (var g = 1; g