• 技术文章 >后端开发 >php教程

    VML绘图板②脚本--VMLgraph.js、XMLtool.js_php基础

    2016-05-17 09:51:57原创675
    脚本
    *************
    * VMLgraph.js
    *************
    var xo=0;
    var yo=0;
    var ox=80;
    var oy=20;
    var dx=0;
    var dy=0;
    var drawKey = false;
    var itemID = 0;
    var ShapeItemNum = 0;
    var ShapeItemX = 0;
    var ShapeItemY = 0;
    var CurveItemNum = 0;
    var NodeDelete = false;
    var ToolBarNum = 2; // 预置的工具编号
    var gradientX = -1;

    function cursor(k) {
    xo = event.clientX - ox;
    yo = event.clientY - oy;
    if(k && xo>=0 && yo>=0)
    oxy.innerHTML = xo+","+yo;
    else
    oxy.innerHTML = "";
    if(drawKey) {
    paint();
    view.innerHTML = tree(canvas.documentElement,0);
    }
    }

    function setOverColor(v) {
    if(! NodeDelete) return;
    v.myColor = v.strokecolor;
    if(v.strokecolor == "red")
    v.strokecolor='#000000';
    else
    v.strokecolor='#ff0000';
    }
    function setOutColor(v) {
    if(! NodeDelete) return;
    v.strokecolor = v.myColor;
    view.innerHTML = tree(canvas.documentElement,0);
    }
    function deleteNode(v) {
    if(! NodeDelete) return;
    var id = v.id;
    for(i=0;i var node = canvas.selectNodes("/*//*")[i];
    if(node.getAttribute("id") == id) {
    canvas.documentElement.childNodes[0].removeChild(node);
    view.innerHTML = tree(canvas.documentElement,0);
    return;
    }
    }
    }

    function setElement(node) {
    node.setAttribute("id") = itemID;
    node.setAttribute("myColor") = "#";
    node.setAttribute("onMouseOver") = "setOverColor(this)";
    node.setAttribute("onMouseOut") = "setOutColor(this)";
    node.setAttribute("onClick") = "deleteNode(this)";

    var subobjField = canvas.createElement("v:stroke");
    subobjField.setAttribute("color") = color1.fillcolor;
    subobjField.setAttribute("dashstyle") = dashstyle.dashstyle;
    node.appendChild(subobjField);
    if(textbox.style.visibility == "visible" && txt.value.length) {
    var subobjField = canvas.createElement("v:path");
    subobjField.setAttribute("textpathok") = "true";
    node.appendChild(subobjField);
    var subobjField = canvas.createElement("v:textpath");
    subobjField.setAttribute("on") = "true";
    subobjField.setAttribute("string") = txt.value;
    subobjField.setAttribute("style") = "font:normal normal normal 16pt 'Arial Black'";
    node.appendChild(subobjField);
    }
    canvas.documentElement.childNodes[0].appendChild(node);
    }

    function mouse_down() {
    drawKey = true;
    dx = xo;
    dy = yo;
    itemID++;
    if(ToolBarNum != 7) ShapeItemNum = 0;
    switch(ToolBarNum) {
    case 3:
    var objField = canvas.createElement("v:line");
    objField.setAttribute("from") = xo+","+yo;
    objField.setAttribute("to") = xo+","+yo;
    return setElement(objField);
    case 4:
    if(CurveItemNum == 0) {
    CurveItemNum = 1;
    var objField = canvas.createElement("v:curve");
    objField.setAttribute("from") = xo+","+yo;
    objField.setAttribute("to") = xo+","+yo;
    objField.setAttribute("control1") = xo+","+yo;
    objField.setAttribute("control2") = xo+","+yo;
    var subobjField = canvas.createElement("v:fill");
    subobjField.setAttribute("opacity") = 0;
    objField.appendChild(subobjField);
    return setElement(objField);
    }
    return;
    case 9:
    var objField = canvas.createElement("v:polyline");
    objField.setAttribute("points") = xo+","+yo+" "+xo+","+yo;
    var subobjField = canvas.createElement("v:fill");
    subobjField.setAttribute("opacity") = 0;
    objField.appendChild(subobjField);
    return setElement(objField);
    case 7:
    if(ShapeItemNum == 0) {
    var objField = canvas.createElement("v:shape");
    objField.setAttribute("style") = "width:500; height:309";
    objField.setAttribute("path") = "m "+xo+","+yo+" l "+xo+","+yo;
    ShapeItemX = xo;
    ShapeItemY = yo;
    }else {
    objField = canvas.documentElement.childNodes[0].lastChild;
    objField.setAttribute("path") = objField.getAttribute("path") + " "+xo+","+yo;
    return;
    }
    ShapeItemNum++;
    break;
    case 5:
    var objField = canvas.createElement("v:rect");
    break;
    case 6:
    var objField = canvas.createElement("v:roundrect");
    objField.setAttribute("arcsize") = 0.2;
    break;
    case 8:
    var objField = canvas.createElement("v:oval");
    break;
    case 10:
    s = "";
    s = tree(canvas.documentElement,1);
    view.innerHTML = s;
    return;
    defaule:
    drawKey = false;
    return;
    }
    if(objField) {
    if(ToolBarNum != 7)
    objField.setAttribute("style") = "left:"+xo+"; top:"+yo+"; width:0; height:0;";
    var subobjField = canvas.createElement("v:fill");
    subobjField.setAttribute("opacity") = gradientBar.opacity;
    subobjField.setAttribute("angle") = gradientBar.angle;
    subobjField.setAttribute("type") = gradientBar.type;
    subobjField.setAttribute("color") = gradientBar.color.value;
    subobjField.setAttribute("color2") = gradientBar.color2.value;
    subobjField.setAttribute("colors") = gradientBar.colors.value;
    subobjField.setAttribute("focusposition") = gradientBar.focusposition;
    objField.appendChild(subobjField);
    return setElement(objField);
    }
    return;
    }

    function mouse_up() {
    drawKey = false;
    if(CurveItemNum > 0) CurveItemNum++;
    if(CurveItemNum > 3) CurveItemNum = 0;
    if(ToolBarNum == 7) {
    if(Math.abs(xo - ShapeItemX) < 2 && Math.abs(yo - ShapeItemY) < 2) {
    ShapeItemNum = 0;
    Element = canvas.documentElement.childNodes[0].lastChild;
    var regerp = / [0-9]+,[0-9]+$/
    var str = Element.getAttribute("path");
    Element.setAttribute("path") = str.replace(regerp," x e");
    view.innerHTML = tree(canvas.documentElement,0);
    }
    }
    }

    function paint() {
    Element = canvas.documentElement.childNodes[0].lastChild;
    var x0,y0,x1,y1;
    x0 = Math.min(dx,xo);
    y0 = Math.min(dy,yo);
    x1 = Math.max(dx,xo);
    y1 = Math.max(dy,yo);
    var box = "left:"+x0+"; top:"+y0+"; width:"+(x1-x0)+"; height:"+(y1-y0)+";";
    switch(ToolBarNum) {
    case 4:
    if(CurveItemNum ==2) {
    Element.setAttribute("control1") = xo+","+yo;
    Element.setAttribute("control2") = Element.getAttribute("to");
    break;
    }
    if(CurveItemNum ==3) {
    Element.setAttribute("control2") = xo+","+yo;
    break;
    }
    case 3:
    Element.setAttribute("to") = xo+","+yo;
    break;
    case 7:
    var regerp = /[0-9]+,[0-9]+$/
    var str = Element.getAttribute("path");
    Element.setAttribute("path") = str.replace(regerp,xo+","+yo);
    break;
    case 5:
    case 6:
    case 8:
    var regerp = /left.+height:[0-9]+;/
    var str = Element.getAttribute("style");
    Element.setAttribute("style") = str.replace(regerp,box);
    break;
    case 9:
    var regerp = / [0-9]+,[0-9]+$/
    var str = Element.getAttribute("points");
    Element.setAttribute("points") = str+" "+xo+","+yo;
    break;
    defaule:
    break;
    }

    }

    function init() {
    tool_box_refresh(); // 工具栏初始
    view.innerHTML = tree(canvas.documentElement); // 绘图区初始
    color.innerHTML = tree(tools.selectNodes("*/colorbar")[0]); // 颜色选择初始
    linebox.innerHTML = tree(tools.selectNodes("*/linebox")[0]); // 线型选择初始
    gradientBox.innerHTML = tree(tools.selectNodes("*/gradient")[0]); // 充填选择初始
    }

    // 绘制工具栏
    function tool_box_refresh() {
    var buffer = "";
    var i;
    for(i=0;i var node = tools.selectNodes("*/toolbar")[i];
    var id = node.getAttribute("id");
    node.childNodes[0].setAttribute("onClick") = "tool_box_select("+id+",this.title)";
    var node1 = node.selectNodes("*/v:rect")[0];
    if(id == ToolBarNum) {
    node1.setAttribute("fillcolor") = "#ffcccc"
    node1.setAttribute("strokecolor") = "#ff0000"
    }else {
    node1.setAttribute("fillcolor") = "#ffffff"
    node1.setAttribute("strokecolor") = "#000000"
    }
    buffer += tree(node.childNodes[0]);
    }
    toolbox.innerHTML = buffer;
    }

    // 工具选择
    function tool_box_select(v,t) {
    var key = ToolBarNum;
    ToolBarNum = v;
    tool_box_refresh();
    hooke();
    if(v == 7) {
    if(key == 7 && ShapeItemNum > 0) {
    Element = canvas.documentElement.childNodes[0].lastChild;
    var str = Element.getAttribute("path");
    Element.setAttribute("path") = str + " x e";
    view.innerHTML = tree(canvas.documentElement,0);
    ShapeItemNum = 0;
    }
    }
    if(v == 10)
    if(textbox.style.visibility == "hidden")
    textbox.style.visibility = "visible";
    else
    textbox.style.visibility = "hidden";
    NodeDelete = false;
    if(v == 1) {
    NodeDelete = true;
    view.innerHTML = tree(canvas.documentElement,0);
    }
    }

    // 颜色选择
    //var setcolorkey = color1;
    function setcolor(c) {
    var setcolorkey = color1;
    setcolorkey.fillcolor = c;
    }

    function gradientColor(v) {
    v.fillcolor = color1.fillcolor;
    gradientRefresh();
    return;
    var m = tools.documentElement.selectNodes("/*/gradient//v:shape").length;
    var node = tools.documentElement.selectNodes("/*/gradient//v:shape");
    for(i=0;i if(node[i].getAttribute("id") == v.id)
    node[i].setAttribute("fillcolor") = color1.fillcolor;
    }
    gradientRefresh();
    }
    function gradientPoint(v) {
    if(gradientX < 0)
    gradientX = xo - 508 - parseInt(v.style.left);
    n = xo - 508 - gradientX;
    if(n < 8) n = 8;
    if(n > 108) n = 108;
    v.style.left = n;
    gradientRefresh();
    }
    function anglePoint(v) {
    angle.style.left = Math.floor((xo-516)/25)*25+8;
    gradientRefresh();
    }
    function opacityPoint(v) {
    opacity.style.left = Math.floor((xo-516)/25)*25+8;
    gradientRefresh();
    }
    function settype(v) {
    if(v.style.borderColor == "black")
    v.style.borderColor = "red";
    else
    v.style.borderColor = "black";
    gradientRefresh();
    }
    function setGradientX() {
    gradientX = -1;
    }

    function gradientRefresh() {
    var m = (parseInt(gradient4.style.left)-parseInt(gradient1.style.left));
    var n1 = (parseInt(gradient2.style.left)-parseInt(gradient1.style.left))/m*100;
    var n2 = (parseInt(gradient3.style.left)-parseInt(gradient1.style.left))/m*100;
    gradientBar.color.value = gradient1.fillcolor;
    gradientBar.color2.value = gradient4.fillcolor;
    if(type3.style.borderColor == "black")
    gradientBar.colors.value = ",";
    else
    gradientBar.colors.value = n1 + "% " + gradient2.fillcolor + "," + n2 + "% " + gradient3.fillcolor;
    if(type1.style.borderColor == "black")
    gradientBar.type = "solid";
    else
    gradientBar.type = "gradient";
    if(type2.style.borderColor == "red")
    gradientBar.type = "gradientradial";
    n1 = (parseInt(focus1.style.left)-8)/m*100;
    n2 = (parseInt(focus2.style.left)-8)/m*100;
    gradientBar.focusposition.value = n1 + "%," + n2 + "%";
    gradientBar.angle = (parseInt(angle.style.left)-8) * 3.6;
    gradientBar.opacity = (parseInt(opacity.style.left)-8)/m
    }

    *************
    * XMLtool.js
    *************

    // 传送XML文档到服务器
    function saveXML()
    {
    var xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP");
    xmlHTTP.open("POST","server.php",false); // 使用ASP时用server.asp
    xmlHTTP.setRequestHeader("Contrn-type","text/xml");
    xmlHTTP.setRequestHeader("Contrn-charset","gb2312");

    xmlHTTP.send(tree(canvas.documentElement));
    var s = xmlHTTP.responseText;
    minview.innerHTML = s.replace(/WIDTH:500;HEIGHT:300/,"WIDTH:120;HEIGHT:72")
    if(xmlHTTP.responseText.indexOf("Error:")!=-1) {
    alert(xmlHTTP.responseText);
    }
    }

    // 遍历xml对象,解析xml的核心函数集
    function tree(Element,debug) {
    var buffer = "";
    var node = "";
    if(Element.nodeType != 3) {
    node = Element;
    buffer += onElement(Element,debug);
    }
    if(Element.nodeType == 3)
    buffer += onData(Element);
    if(Element.hasChildNodes) {
    for(var i=0;i buffer += tree(Element.childNodes(i),debug);
    }
    }
    if(node)
    buffer += endElement(node,debug);
    return buffer;
    }

    /***** 以下三个函数请根据需要自行修改 *****/
    // 遍历xml对象--节点开始
    function onElement(Element,debug) {
    var buffer = (debug ? "<" : "<") + Element.nodeName;
    n = Element.attributes.length
    if(n>0) { // 若该节点有参数
    for(var i=0;i buffer += ' ' + Element.attributes(i).name + '=\"' + Element.attributes(i).value + '"';
    }
    buffer += debug ? ">" : ">";
    return buffer;
    }

    // 遍历xml对象--节点结束
    function endElement(Element,debug) {
    return (debug ? "
    " : ">");
    }

    // 遍历xml对象--节点数据
    function onData(Element) {
    return Element.nodeValue
    }
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    Web大前端开发直播班

    相关文章推荐

    • 详细介绍php反序列化pop链构造知识点• 微信摇一摇周边 红包,摇周边红包_PHP教程• PHP也能干大事 随机函数,php大事随机函数_PHP教程• php+ajax实现文章自动保存的方法_PHP教程• php实现递归与无限分类的方法_PHP教程

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网