新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论SVG, GML, X3D, VRML, VML, XAML, AVALON, Batik等基于XML的图形技术,以及有关GIS的应用。
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - 高级XML应用『 SVG/GML/VRML/X3D/XAML 』 → 造福大众!javascript完全控制svg的代码。 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 84334 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 造福大众!javascript完全控制svg的代码。 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     rocmike 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(Java考了96分!)
      文章:15
      积分:337
      门派:XML.ORG.CN
      注册:2004/8/16

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给rocmike发送一个短消息 把rocmike加入好友 查看rocmike的个人资料 搜索rocmike在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看rocmike的博客楼主
    发贴心情 造福大众!javascript完全控制svg的代码。

    里面包含创建svg图形,修改svg图形,删除svg图形的全部代码,提供给大家参考参考,如果大家有更好的代码,请修改后,记得与我分享一下。

    :)

    mail:rocmike@163.com


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/15 21:19:00
     
     rocmike 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(Java考了96分!)
      文章:15
      积分:337
      门派:XML.ORG.CN
      注册:2004/8/16

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给rocmike发送一个短消息 把rocmike加入好友 查看rocmike的个人资料 搜索rocmike在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看rocmike的博客2
    发贴心情 
    为不方便下载的同志,提代出源代码。如下:

    test.html

    <html>
    <head>
      <title>test SVG</title>
      <script language="javascript" src="js/showsvg.js" type="text/javascript"></script>
      <script language="JavaScript">
      var svgDoc;
      var gnode;
      var arrUseValue;
      var arrUseYear;
      var useMinValue;
      var useMaxValue;
      var svgType = 3;
      var arrmyv = new Array('90','90','270','90','180','340');
      var arrperiod = new Array(2000,2001,2002,2003,2004,2005);
      
      var mynewwin = null;

      function init(event)
      {
        svgDoc = event.getTarget().getOwnerDocument();
        gnode = svgDoc.getElementById("gc");
        //update(arrmyv,70,70,40,40);
      }
      
      
      function refreshopenwin() {

        var arrmyv1 = new Array('100','40','270','90','180','340');
        var arrperiod1 = new Array(200,201,202,203,204,205);
        svgViewChange(arrmyv1,arrperiod1,svgType);
        mynewwin.location.reload();
      }
      </script>

      <style type="text/css">
        body {overflow:hidden;}
        #tbl {position:absolute;left:0;top:10px;width:35%;height:100%;overflow:auto;}
        #svg {position:absolute;left:35%;top:0;width:65%;height:98%;margin-top:3;}
        a:link, a:visited {color:red;text-decoration:none;}
        a:hover {color:white;background-color:red;text-decoration:none;}
        form {margin:0;}
        td, h1, h3, h4 {text-align:center;}
        th, h1, h3, h4 {color:navy;}
        h1 {margin-bottom:0;}
        h4 {margin-top:0;}
        .title {font-size:24;}
      </style>

    </head>
    <body>
         <embed id="showsvg" name="showsvg" type="image/svg+xml" src="littleimg.svg" width="300" height="200" />
         </br>
         <input type="button" name="drawpoly" value="draw poly" onclick="svgViewChange(arrmyv,arrperiod,1);"><br>
         <input type="button" name="clear" value="clear all" onclick="deleItem();"><br>
         <input type="button" name="drawrect" value="draw rectange" onclick="svgViewChange(arrmyv,arrperiod,2);"><br>
         <input type="button" name="addp" value="draw pie" onclick="svgViewChange(arrmyv,arrperiod,3);"><br>
         <input type="button" name="reload" value="refresh open window" onclick="refreshopenwin();">
         <input type="radio" name="R5" value="1" onClick="svgViewChange(arrmyv,arrperiod,1);" checked>折线图
                  <input type="radio" name="R5" value="2" onClick="svgViewChange(arrmyv,arrperiod,2);">柱状图
                  <input type="radio" name="R5" value="3" onClick="svgViewChange(arrmyv,arrperiod,3);">饼图
    </body>
    </html>

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/15 21:22:00
     
     rocmike 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(Java考了96分!)
      文章:15
      积分:337
      门派:XML.ORG.CN
      注册:2004/8/16

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给rocmike发送一个短消息 把rocmike加入好友 查看rocmike的个人资料 搜索rocmike在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看rocmike的博客3
    发贴心情 
    littleimg.svg

    <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
    <!--
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
      "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
    -->
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000303 Stylable//EN"
      "http://www.w3.org/TR/2000/03/WD-SVG-20000303/DTD/svg-20000303-stylable.dtd">
    <svg id="mainid" onload="initsvg(evt)" onzoom="ZoomControl()" onclick="opennewwin();">
     <script type="text/ecmascript"><![CDATA[
       function initsvg(evt)
       {
         try
         {
           init(evt);
         }
         catch(e) {};
       }

       ]]>
     </script>
      <defs>
      <linearGradient id="grad001" gradientTransform="rotate(90)">
        <stop offset="0" stop-color="#CBFEFF"/>
        <stop offset="0.26" stop-color="#C4F1FF"/>
        <stop offset="0.764" stop-color="#A0A9FF"/>
        <stop offset="1" stop-color="#9999FF"/>
      </linearGradient>
        <style type="text/css">
          <![CDATA[
          line
          {
            stroke: #000;
            stroke-width: 1px
          }
          g text
          {
            font-family: Arial,Helvetica,sans-serif,SimSun;
            font-size: 9px;
            cursor:hand;
          }
          g rect
          {
            cursor:move;
          }
          rect
          {
            cursor:move;
          }
          ]]>
        </style>
      </defs>
      <a xlink:href="">
      <g id="imageBorder">
          <rect id="imageBorderRect" x="0" y="0" width="179" height="128" style="fill:url(#grad001);stroke:none"/>
      </g>
     <g id="gc">
     </g>
      <g id="tooltip">
        <rect id="ttr" x="0" y="0" rx="5" ry="5" width="100" height="16" style="visibility: hidden"/>
        <text id="ttt" x="0" y="0" style="visibility: hidden">dyn. Text</text>
      </g>
      </a>
    </svg>

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/15 21:23:00
     
     rocmike 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(Java考了96分!)
      文章:15
      积分:337
      门派:XML.ORG.CN
      注册:2004/8/16

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给rocmike发送一个短消息 把rocmike加入好友 查看rocmike的个人资料 搜索rocmike在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看rocmike的博客4
    发贴心情 
    showsvg.js

    var arrColors   = ['red','green','blue','yellow','navy','gold','dodgerblue','navajowhite','mediumpurple'];

    //数组排序函数,升序
    function s(a,b) {
      return a - b;
    }
    //排序函数用法
    //array.sort(s);

    //删除数组中的一个元素,参数dx表示该元素的index
    Array.prototype.baoremove = function(dx)
    {
      if(isNaN(dx)||dx>this.length){return false;}
      this.splice(dx,1);
    }

    //重新排列数组,去掉为空的值或者非正常的值
    //参数是一个两维数组,第一维表示数值的数组,第二维表示年份的数组,
    //两个子数组在排序前后均须保持一一对应关系
    function resortArray() {
      //var tmparr1 = tmparr[0];
      //var tmparr2 = tmparr[1];
      var len = arrUseValue.length;
      var tmpi = 0;
      for(var i=0; i<len; i++) {
        if(isNaN(arrUseValue[tmpi])) {
          arrUseValue.baoremove(tmpi);
          arrUseYear.baoremove(tmpi);
          tmpi = (i > 0) ? i : 0;
          //tmparr1.baoremove(i);
          //tmparr2.baoremove(i);
        } else {
          tmpi = i + 1;
        }
      }
      //var retarr = new Array(tmparr1,tmparr2);
      //return retarr;
    }

    function getMaxValue(tmparr) {
      var maxValue = 0;
      for (var i=0; i<tmparr.length; i++) {
        var value = parseFloat(tmparr[i]);
        if (value > maxValue) maxValue = value;
      }
      maxValue = Math.ceil(maxValue);
      return maxValue;
    }


    function getMinValue(tmparr) {
      var minValue = 1000000000000000;
      for (var i=0; i<tmparr.length; i++) {
        var value = parseFloat(tmparr[i]);
        if (value < minValue) {
          minValue = value;
        }
      }
      minValue = Math.floor(minValue);
      return minValue;
    }


    function getMaxPeriod(tmparr) {
      var maxValue = 0;
      for (var i=0; i<tmparr.length; i++) {
        var value = tmparr[i][0];
        if (value > maxValue) maxValue = value;
      }
      return maxValue;
    }


    function getMinPeriod(tmparr) {
      var minPeriod = 3000;
      for (var i=0; i<tmparr.length; i++) {
        var value = tmparr[i][0];
        if (value < minPeriod) minPeriod = value;
      }
      return minPeriod;
    }

    //显示提示窗口    
    function ShowTooltip(mousemove_event,txt)
    {
      //obj=mousemove_event.target.parentNode;
      //obj.style.setProperty("opacity","0.5");
      
      var ttrelem,tttelem,posx,posy,curtrans,ctx,cty;

      ttrelem=svgDoc.getElementById("ttr");
      tttelem=svgDoc.getElementById("ttt");

      posx=mousemove_event.clientX;
      posy=mousemove_event.clientY;
      tttelem.childNodes.item(0).data=txt;

      curtrans=svgDoc.documentElement.currentTranslate;
      ctx=curtrans.x;
      cty=curtrans.y;

      ttrelem.setAttribute("x",posx-ctx);
      ttrelem.setAttribute("y",posy-cty-20);
      tttelem.setAttribute("x",posx-ctx+5);
      tttelem.setAttribute("y",posy-cty-8);
      ttrelem.setAttribute("width",tttelem.getComputedTextLength()+30);
      tttelem.setAttribute("style","fill: #00C; font-size: 13px; visibility: visible");
      ttrelem.setAttribute("style","fill: #FFC; stroke: #000; stroke-width: 0.5px;\
        visibility: visible");
    }
    //隐藏提示窗口
    function HideTooltip(mouseout_event)
    {
      //obj=mouseout_event.target.parentNode;
      //obj.style.setProperty("opacity","1.0");
      
      var ttrelem,tttelem;

      ttrelem=svgDoc.getElementById("ttr");
      tttelem=svgDoc.getElementById("ttt");
      ttrelem.setAttribute("style","visibility: hidden");
      tttelem.setAttribute("style","visibility: hidden");
    }
    //窗口缩放
    function ZoomControl()
    {
      var curzoom;

      curzoom=svgDoc.documentElement.currentScale;
      svgDoc.getElementById("tooltip").setAttribute("transform","scale("+1/curzoom+")");
    }
        
    //清除svg图像中的所有元素,便于重新画图
    function deleItem() {
      //var gnode = svgDoc.getElementById("gc");
      while (gnode.getChildNodes().getLength() > 0) {
        gnode.removeChild(gnode.getFirstChild());
      }
    }

    //画折线图,第一个参数是数值数组,
    //第二个参数是最小值,第三个参数是最大值
    function drawPolyline(tmparr,tmpminv,tmpmaxv) {
      var vpoint = "";
      var t = tmparr.length;
      var addv = 152 / (t - 1);
      var vx = 20;
      var vy = 0;
      tmpdiv = (tmpmaxv - tmpminv) / 5;
      
      tmpmaxv = Math.ceil(tmpmaxv + tmpdiv);
      tmpminv = Math.floor(tmpminv - tmpdiv);
      
      for(var i=0;i<t;i++) {
        var txtcirc = arrUseYear[i] + ", " + tmparr[i];
        //确定x坐标
        vx = 20 + i * addv;
        vpoint += vx + ",";
        //确定y坐标
        //alert(tmparr[i]);
        vy = 120 - (tmparr[i] - tmpminv) / (tmpmaxv - tmpminv) * 120;
        vpoint += vy + ",";
        
        //添加小圆点
        var newcircle = svgDoc.createElement("circle");
        newcircle.setAttribute("cx",vx);
        newcircle.setAttribute("cy",vy);
        newcircle.setAttribute("r",2);
        newcircle.setAttribute("style","cursor:crosshair;fill:" + arrColors[i]);
        newcircle.setAttribute("onmouseover","ShowTooltip(evt,'" + txtcirc + "')" );
        newcircle.setAttribute("onmouseout","HideTooltip(evt)");
        gnode.appendChild(newcircle);
      }
      vpoint  = vpoint.substring(0,(vpoint.length - 1));
      //alert(vpoint);
      var newpoly = svgDoc.createElement("polyline");
      newpoly.setAttribute("points",vpoint);
      newpoly.setAttribute("style","fill: none; stroke: #00C; stroke-width: 1.5px");
      gnode.appendChild(newpoly);
    }

    //画柱状图,第一个参数是数值数组,
    //第二个参数是最小值,第三个参数是最大值
    function drawRectange(tmparr,tmpminv,tmpmaxv) {
      var vpoint = "";
      var t = tmparr.length;
      //var addv = 32.5;
      var addv = 130 / (t - 1);
      var vx = 27;
      var vy = 0;
      tmpdiv = (tmpmaxv - tmpminv) / 5;
      
      tmpmaxv = Math.ceil(tmpmaxv + tmpdiv);
      tmpminv = Math.floor(tmpminv - tmpdiv);

      for(var i=0;i<t;i++) {
        var txtrect = arrUseYear[i] + ", " + tmparr[i];
        //确定x坐标
        vx = 27 + i * addv;
        //确定y坐标
        vy = 120 - (tmparr[i] - tmpminv) / (tmpmaxv - tmpminv) * 120;
        var newrect = svgDoc.createElement("rect");
        newrect.setAttribute("x",vx);
        newrect.setAttribute("y",vy);
        newrect.setAttribute("width",15);
        newrect.setAttribute("height",(120 - vy));
        newrect.setAttribute("style","cursor:crosshair;fill:" + arrColors[i]);
        newrect.setAttribute("onmouseover","ShowTooltip(evt,'" + txtrect + "')" );
        newrect.setAttribute("onmouseout","HideTooltip(evt)");
        gnode.appendChild(newrect);
      }
    }

    //画饼图,第一个参数是数值数组,第二个参数是年份数组
    function drawPie(tmparr1,tmparr2) {
        var basePointX     = 62.;
        var basePointY     = 65.;
        var currentX       = 0.0;
        var currentY       = 0.0;
        var offsetX1       = 0.0;
        var offsetY1       = 0.0;
        var offsetX2       = 0.0;
        var offsetY2       = 0.0;
        var radius         = 60.;
        var angleSum1      = 0.;
        var angleSum2      = 0.;
        var vertexCount    = tmparr1.length;
        var xPts           = Array(vertexCount);
        var yPts           = Array(vertexCount);
        var angles         = Array(vertexCount);
        var pointPath      = "";
        var colorCount     = arrColors.length;

        var pieNode        = null;
        var gcNode         = null;
        
        var dataSum = 0.;

        for(var v=0; v<vertexCount; v++)
        {
           dataSum += Math.abs(parseFloat(tmparr1[v]));
        }
        //alert(dataSum);
        for(var v=0; v<vertexCount; v++)
        {
           angles[v] = 360.*Math.abs(parseFloat(tmparr1[v]))/dataSum;
        }
        //alert(angles);
        gcNode = svgDoc.getElementById("gc");
        var txtstyle = "text-anchor:left;";
        for(var v=0; v<vertexCount; v++)
        {
           angleSum2 = angleSum1 + angles[v];
           var txtpv = parseInt(Math.abs(tmparr1[v])/dataSum *10000) / 100 + "%";
           
           offsetX1 = radius*Math.cos(angleSum1*Math.PI/180);
           offsetY1 = radius*Math.sin(angleSum1*Math.PI/180);
           offsetX2 = radius*Math.cos(angleSum2*Math.PI/180);
           offsetY2 = radius*Math.sin(angleSum2*Math.PI/180);

           currentX = basePointX+offsetX2;
           currentY = basePointY-offsetY2;

          // the vertical offset must be subtracted,
          // so we need to "flip" the sign of offsetY1
           offsetY1 *= -1;

           pointPath = "M"+basePointX+","+basePointY;
           pointPath += " l"+offsetX1+","+offsetY1;
           if(angles[v] < 180 ) {
             pointPath += " A"+radius+","+radius+" 0 0 0 ";
           } else {
             pointPath += " A"+radius+","+radius+" 0 1 0 ";
           }
           pointPath += currentX+","+currentY;
           pointPath += " L"+basePointX+","+
                            basePointY+"z";

           fillColor  = "fill:" + arrColors[v%colorCount];

           txtGnode = tmparr2[v] + "," + tmparr1[v] + "," + txtpv;
           //alert(txtGnode);
           var newg = svgDoc.createElement("g");
           //newg.addEventListener("mouseover",OpacityDown,true);
           //newg.addEventListener("mouseout",OpacityUp,true);
           newg.setAttribute("onmouseover","ShowTooltip(evt,'" + txtGnode + "')" );
           newg.setAttribute("onmouseout","HideTooltip(evt)");
           gcNode.appendChild(newg);

           pieNode = svgDoc.createElement("path");
           pieNode.setAttribute("d",    pointPath);
           pieNode.setAttribute("style",fillColor);
           newg.appendChild(pieNode);
           
           var recNode = svgDoc.createElement("rect");
           recNode.setAttribute("x",123);
           recNode.setAttribute("y",(10 + v*10));
           recNode.setAttribute("width",3);
           recNode.setAttribute("height",3);
           recNode.setAttribute("style",fillColor);
           newg.appendChild(recNode);
           
           var txtNode = svgDoc.createElement("text");
           txtNode.setAttribute("x",128);
           txtNode.setAttribute("y",(15 + v*10));
           txtst = txtstyle + fillColor;
           txtNode.setAttribute("style",txtst);
           newg.appendChild(txtNode);
           texte=svgDoc.createTextNode(tmparr2[v] + "[" + txtpv + "]");
           txtNode.appendChild(texte);

           angleSum1 += angles[v];
        }
    }

    //设定x轴坐标,画线及添加标题,参数是年份数组
    function setXAxis(tmparr) {
      //画x轴线
      var newline = svgDoc.createElement("line");
      newline.setAttribute("x1",20);
      newline.setAttribute("y1",120);
      newline.setAttribute("x2",172);
      newline.setAttribute("y2",120);
      newline.setAttribute("style","stroke-width:2;stroke:blue");
      gnode.appendChild(newline);
      
      var t = tmparr.length - 1;
      var addv = 152 / t;
      var addt = 144 / t;
      var sumlv = 20;
      var sumtv = 17;
     //画x轴的文字
      newtext = svgDoc.createElement("text");
      newtext.setAttribute("x",sumtv);
      newtext.setAttribute("y",127);
      gnode.appendChild(newtext);
      texte=svgDoc.createTextNode(tmparr[0]);
      newtext.appendChild(texte);
      for(var i=0;i<t;i++) {
        //画x轴的小短线
        sumlv = 20 + (i + 1) * addv;
        newline = svgDoc.createElement("line");
       newline.setAttribute("x1",sumlv);
       newline.setAttribute("y1",0);
       newline.setAttribute("x2",sumlv);
       newline.setAttribute("y2",120);
       newline.setAttribute("style","stroke-width:0.5;stroke:white");
       gnode.appendChild(newline);
       //画x轴的文字
       sumtv = 17 + (i + 1) * addt;
       newtext = svgDoc.createElement("text");
       newtext.setAttribute("x",sumtv);
       newtext.setAttribute("y",127);
       gnode.appendChild(newtext);
       texte=svgDoc.createTextNode(tmparr[i+1]);
        newtext.appendChild(texte);
      }
    }

    //设定y轴坐标,画线及添加标题,第一个参数是最小值,第二个参数是最大值
    function setYAxis(tmpminv,tmpmaxv) {
      //画y轴线
      var newline = svgDoc.createElement("line");
      newline.setAttribute("x1",20);
      newline.setAttribute("y1",0);
      newline.setAttribute("x2",20);
      newline.setAttribute("y2",120);
      newline.setAttribute("style","stroke-width:2;stroke:blue");
      gnode.appendChild(newline);
      
      var addv = 24;
      var sumlv = 0;
      var sumtv = 4;

      tmpdiv = (tmpmaxv - tmpminv) / 5;
      tmpmaxv = Math.ceil(tmpmaxv + tmpdiv);
      tmpminv = Math.floor(tmpminv - tmpdiv);

      var divtxt = (tmpmaxv - tmpminv) / 5;
      for(var i=0;i<5;i++) {
        //画y轴的小短线
        sumlv = 0 + i * addv;
        newline = svgDoc.createElement("line");
       newline.setAttribute("x1",20);
       newline.setAttribute("y1",sumlv);
       newline.setAttribute("x2",172);
       newline.setAttribute("y2",sumlv);
       newline.setAttribute("style","stroke-width:0.5;stroke:white");
       gnode.appendChild(newline);
     }
     for(var i=0;i<6;i++) {
       //画y轴的文字
       if(i == 0) {
         sumtv = 7;
       } else {
         sumtv = 4 + i * 24;
       }
       txtdata = tmpmaxv - Math.round(divtxt * i);
       newtext = svgDoc.createElement("text");
       newtext.setAttribute("x",1);
       newtext.setAttribute("y",sumtv);
       gnode.appendChild(newtext);
       texte=svgDoc.createTextNode(txtdata);
        newtext.appendChild(texte);
      }
    }

    //设定公司的名称
    function setCompanyName(companyname) {
      parent.all['svgtitle'].innerHTML = companyname;
    }

    //设定图象的标题,涉及到下拉框和标题栏的同时变动
    function setGraphTitle(title) {
      //
    }

    //点击动态改变图象的函数,第一个参数是数值数组,第二个参数是年份数组
    //function svgViewChange(tmparr1,tmparr2) {
    function svgViewChange(tmparr1,tmparr2,type) {
      arrUseValue = tmparr1;
      arrUseYear = tmparr2;
      //alert(arrUseValue);
      //alert(arrUseYear);
      resortArray();
      svgType = type;
      if(svgType == 1) {
        deleItem();
        useMinValue = getMinValue(arrUseValue);
        useMaxValue = getMaxValue(arrUseValue);
        setXAxis(arrUseYear);
        setYAxis(useMinValue,useMaxValue);
        drawPolyline(arrUseValue,useMinValue,useMaxValue);
      } else if(svgType == 2) {
        deleItem();
        useMinValue = getMinValue(arrUseValue);
        useMaxValue = getMaxValue(arrUseValue);
        setXAxis(arrUseYear);
        setYAxis(useMinValue,useMaxValue);
        drawRectange(arrUseValue,useMinValue,useMaxValue);
      } else if(svgType == 3) {
        deleItem();
        useMinValue = getMinValue(arrUseValue);
        useMaxValue = getMaxValue(arrUseValue);
        drawPie(arrUseValue,arrUseYear);
      }
    }

    function opennewwin() {
      mynewwin = window.open ('bigimg.html', 'svgnewwindow', 'height=320, width=370, top=100, left=100, toolbar=no, menubar=no, scrollbars=no,resizable=no,location=no, status=no');
    }

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/15 21:24:00
     
     rocmike 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(Java考了96分!)
      文章:15
      积分:337
      门派:XML.ORG.CN
      注册:2004/8/16

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给rocmike发送一个短消息 把rocmike加入好友 查看rocmike的个人资料 搜索rocmike在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看rocmike的博客5
    发贴心情 
    bigimg.html

    <html>
    <head>
      <title>Big Image of SVG</title>
      <script language="javascript" src="js/showbigsvg.js" type="text/javascript"></script>
      <script language="JavaScript">
      var svgDoc;
      var gnode;
      var arrUseValue;
      var arrUseYear;
      var useMinValue;
      var useMaxValue;
      var svgType = opener.svgType;
      var arrUseValue = opener.arrUseValue;
      var arrUseYear = opener.arrUseYear;

      function init(event)
      {
        svgDoc = event.getTarget().getOwnerDocument();
        gnode = svgDoc.getElementById("gc");
        svgViewChange(arrUseValue,arrUseYear,svgType);

        if(arrUseValue.length > 0) {
         if(svgType == 1) {
           deleItem();
           useMinValue = getMinValue(arrUseValue);
           useMaxValue = getMaxValue(arrUseValue);
           setXAxis(arrUseYear);
           setYAxis(useMinValue,useMaxValue);
           drawPolyline(arrUseValue,useMinValue,useMaxValue);
         } else if(svgType == 2) {
           deleItem();
           useMinValue = getMinValue(arrUseValue);
           useMaxValue = getMaxValue(arrUseValue);
           setXAxis(arrUseYear);
           setYAxis(useMinValue,useMaxValue);
           drawRectange(arrUseValue,useMinValue,useMaxValue);
         } else if(svgType == 3) {
           deleItem();
           useMinValue = getMinValue(arrUseValue);
           useMaxValue = getMaxValue(arrUseValue);
           drawPie(arrUseValue,arrUseYear);
         }
       }

      }
      self.focus();
      </script>

      <style type="text/css">
        body {overflow:hidden;}
        #tbl {position:absolute;left:0;top:10px;width:35%;height:100%;overflow:auto;}
        #svg {position:absolute;left:35%;top:0;width:65%;height:98%;margin-top:3;}
        a:link, a:visited {color:red;text-decoration:none;}
        a:hover {color:white;background-color:red;text-decoration:none;}
        form {margin:0;}
        td, h1, h3, h4 {text-align:center;}
        th, h1, h3, h4 {color:navy;}
        h1 {margin-bottom:0;}
        h4 {margin-top:0;}
        .title {font-size:24;}
      </style>

    </head>
    <body>
         <embed id="showsvg" name="showsvg" type="image/svg+xml" src="largeimg.svg" width="358" height="256" />
         </br>
         <input type="radio" name="R5" value="1" onClick="svgViewChange(arrUseValue,arrUseYear,1);" checked>折线图
                  <input type="radio" name="R5" value="2" onClick="svgViewChange(arrUseValue,arrUseYear,2);">柱状图
                  <input type="radio" name="R5" value="3" onClick="svgViewChange(arrUseValue,arrUseYear,3);">饼图
    </body>
    </html>

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/15 21:25:00
     
     rocmike 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(Java考了96分!)
      文章:15
      积分:337
      门派:XML.ORG.CN
      注册:2004/8/16

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给rocmike发送一个短消息 把rocmike加入好友 查看rocmike的个人资料 搜索rocmike在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看rocmike的博客6
    发贴心情 
    largeimg.svg

    <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
    <!--
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
      "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
    -->
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000303 Stylable//EN"
      "http://www.w3.org/TR/2000/03/WD-SVG-20000303/DTD/svg-20000303-stylable.dtd">
    <svg id="mainid" onload="initsvg(evt)" onzoom="ZoomControl()">
     <script type="text/ecmascript"><![CDATA[
       function initsvg(evt)
       {
         try
         {
           init(evt);
         }
         catch(e) {};
       }

       ]]>
     </script>
      <defs>
      <linearGradient id="grad001" gradientTransform="rotate(90)">
        <stop offset="0" stop-color="#CBFEFF"/>
        <stop offset="0.26" stop-color="#C4F1FF"/>
        <stop offset="0.764" stop-color="#A0A9FF"/>
        <stop offset="1" stop-color="#9999FF"/>
      </linearGradient>
        <style type="text/css">
          <![CDATA[
          line
          {
            stroke: #000;
            stroke-width: 1px
          }
          g text
          {
            font-family: Arial,Helvetica,sans-serif,SimSun;
            font-size: 11px;
            cursor:hand;
          }
          g rect
          {
            cursor:move;
          }
          rect
          {
            cursor:move;
          }
          ]]>
        </style>
      </defs>
      <a xlink:href="">
      <g id="imageBorder">
          <rect id="imageBorderRect" x="0" y="0" width="358" height="256" style="fill:url(#grad001);stroke:none"/>
      </g>
     <g id="gc">
     </g>
      <g id="tooltip">
        <rect id="ttr" x="0" y="0" rx="5" ry="5" width="100" height="16" style="visibility: hidden"/>
        <text id="ttt" x="0" y="0" style="visibility: hidden">dyn. Text</text>
      </g>
      </a>
    </svg>

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/15 21:26:00
     
     rocmike 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(Java考了96分!)
      文章:15
      积分:337
      门派:XML.ORG.CN
      注册:2004/8/16

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给rocmike发送一个短消息 把rocmike加入好友 查看rocmike的个人资料 搜索rocmike在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看rocmike的博客7
    发贴心情 
    showbigsvg.js

    var arrColors   = ['red','green','blue','yellow','navy','gold','dodgerblue','navajowhite','mediumpurple'];

    //数组排序函数,升序
    function s(a,b) {
      return a - b;
    }
    //排序函数用法
    //array.sort(s);

    //删除数组中的一个元素,参数dx表示该元素的index
    Array.prototype.baoremove = function(dx)
    {
      if(isNaN(dx)||dx>this.length){return false;}
      this.splice(dx,1);
    }

    //重新排列数组,去掉为空的值或者非正常的值
    //参数是一个两维数组,第一维表示数值的数组,第二维表示年份的数组,
    //两个子数组在排序前后均须保持一一对应关系
    function resortArray() {
      //var tmparr1 = tmparr[0];
      //var tmparr2 = tmparr[1];
      var len = arrUseValue.length;
      var tmpi = 0;
      for(var i=0; i<len; i++) {
        if(isNaN(arrUseValue[tmpi])) {
          arrUseValue.baoremove(tmpi);
          arrUseYear.baoremove(tmpi);
          tmpi = (i > 0) ? i : 0;
          //tmparr1.baoremove(i);
          //tmparr2.baoremove(i);
        } else {
          tmpi = i + 1;
        }
      }
      //var retarr = new Array(tmparr1,tmparr2);
      //return retarr;
    }

    function getMaxValue(tmparr) {
      var maxValue = 0;
      for (var i=0; i<tmparr.length; i++) {
        var value = parseFloat(tmparr[i]);
        if (value > maxValue) maxValue = value;
      }
      maxValue = Math.ceil(maxValue);
      return maxValue;
    }


    function getMinValue(tmparr) {
      var minValue = 1000000000000000;
      for (var i=0; i<tmparr.length; i++) {
        var value = parseFloat(tmparr[i]);
        if (value < minValue) {
          minValue = value;
        }
      }
      minValue = Math.floor(minValue);
      return minValue;
    }


    function getMaxPeriod(tmparr) {
      var maxValue = 0;
      for (var i=0; i<tmparr.length; i++) {
        var value = tmparr[i][0];
        if (value > maxValue) maxValue = value;
      }
      return maxValue;
    }


    function getMinPeriod(tmparr) {
      var minPeriod = 3000;
      for (var i=0; i<tmparr.length; i++) {
        var value = tmparr[i][0];
        if (value < minPeriod) minPeriod = value;
      }
      return minPeriod;
    }

    //显示提示窗口    
    function ShowTooltip(mousemove_event,txt)
    {
      //obj=mousemove_event.target.parentNode;
      //obj.style.setProperty("opacity","0.5");
      
      var ttrelem,tttelem,posx,posy,curtrans,ctx,cty;

      ttrelem=svgDoc.getElementById("ttr");
      tttelem=svgDoc.getElementById("ttt");

      posx=mousemove_event.clientX;
      posy=mousemove_event.clientY;
      tttelem.childNodes.item(0).data=txt;

      curtrans=svgDoc.documentElement.currentTranslate;
      ctx=curtrans.x;
      cty=curtrans.y;

      ttrelem.setAttribute("x",posx-ctx);
      ttrelem.setAttribute("y",posy-cty-20);
      tttelem.setAttribute("x",posx-ctx+5);
      tttelem.setAttribute("y",posy-cty-8);
      ttrelem.setAttribute("width",tttelem.getComputedTextLength()+30);
      tttelem.setAttribute("style","fill: #00C; font-size: 13px; visibility: visible");
      ttrelem.setAttribute("style","fill: #FFC; stroke: #000; stroke-width: 0.5px;\
        visibility: visible");
    }
    //隐藏提示窗口
    function HideTooltip(mouseout_event)
    {
      //obj=mouseout_event.target.parentNode;
      //obj.style.setProperty("opacity","1.0");
      
      var ttrelem,tttelem;

      ttrelem=svgDoc.getElementById("ttr");
      tttelem=svgDoc.getElementById("ttt");
      ttrelem.setAttribute("style","visibility: hidden");
      tttelem.setAttribute("style","visibility: hidden");
    }
    //窗口缩放
    function ZoomControl()
    {
      var curzoom;

      curzoom=svgDoc.documentElement.currentScale;
      svgDoc.getElementById("tooltip").setAttribute("transform","scale("+1/curzoom+")");
    }
        
    //清除svg图像中的所有元素,便于重新画图
    function deleItem() {
      //var gnode = svgDoc.getElementById("gc");
      while (gnode.getChildNodes().getLength() > 0) {
        gnode.removeChild(gnode.getFirstChild());
      }
    }

    //画折线图,第一个参数是数值数组,
    //第二个参数是最小值,第三个参数是最大值
    function drawPolyline(tmparr,tmpminv,tmpmaxv) {
      var vpoint = "";
      var t = tmparr.length;
      var addv = 320 / (t - 1);
      var vx = 29;
      var vy = 10;
      tmpdiv = (tmpmaxv - tmpminv) / 10;
      
      tmpmaxv = Math.ceil(tmpmaxv + tmpdiv);
      tmpminv = Math.floor(tmpminv - tmpdiv);
      
      for(var i=0;i<t;i++) {
        var txtcirc = arrUseYear[i] + ", " + tmparr[i];
        //确定x坐标
        vx = 29 + i * addv;
        vpoint += vx + ",";
        //确定y坐标
        //alert(tmparr[i]);
        vy = 230 - (tmparr[i] - tmpminv) / (tmpmaxv - tmpminv) * 220;
        vpoint += vy + ",";
        //alert(vx);
        //alert(vy);
        //alert(vpoint);
        //添加小圆点
        var newcircle = svgDoc.createElement("circle");
        newcircle.setAttribute("cx",vx);
        newcircle.setAttribute("cy",vy);
        newcircle.setAttribute("r",2);
        newcircle.setAttribute("style","cursor:crosshair;fill:" + arrColors[i]);
        newcircle.setAttribute("onmouseover","ShowTooltip(evt,'" + txtcirc + "')" );
        newcircle.setAttribute("onmouseout","HideTooltip(evt)");
        gnode.appendChild(newcircle);
      }
      vpoint  = vpoint.substring(0,(vpoint.length - 1));
      //alert(vpoint);
      var newpoly = svgDoc.createElement("polyline");
      newpoly.setAttribute("points",vpoint);
      newpoly.setAttribute("style","fill: none; stroke: #00C; stroke-width: 1.5px");
      gnode.appendChild(newpoly);
    }

    //画柱状图,第一个参数是数值数组,
    //第二个参数是最小值,第三个参数是最大值
    function drawRectange(tmparr,tmpminv,tmpmaxv) {
      var vpoint = "";
      var t = tmparr.length;
      //var addv = 32.5;
      var addv = (349 - 29 - 15) / (t - 1);
      var vx = 29;
      var vy = 0;
      tmpdiv = (tmpmaxv - tmpminv) / 10;
      
      tmpmaxv = Math.ceil(tmpmaxv + tmpdiv);
      tmpminv = Math.floor(tmpminv - tmpdiv);

      for(var i=0;i<t;i++) {
        var txtrect = arrUseYear[i] + ", " + tmparr[i];
        //确定x坐标
        vx = 29 + i * addv;
        //确定y坐标
        vy = 230 - (tmparr[i] - tmpminv) / (tmpmaxv - tmpminv) * 220;
        var newrect = svgDoc.createElement("rect");
        newrect.setAttribute("x",vx);
        newrect.setAttribute("y",vy);
        newrect.setAttribute("width",15);
        newrect.setAttribute("height",(230 - vy));
        newrect.setAttribute("style","cursor:crosshair;fill:" + arrColors[i]);
        newrect.setAttribute("onmouseover","ShowTooltip(evt,'" + txtrect + "')" );
        newrect.setAttribute("onmouseout","HideTooltip(evt)");
        gnode.appendChild(newrect);
      }
    }

    //画饼图,第一个参数是数值数组,第二个参数是年份数组
    function drawPie(tmparr1,tmparr2) {
        var basePointX     = 126.;
        var basePointY     = 129.;
        var currentX       = 0.0;
        var currentY       = 0.0;
        var offsetX1       = 0.0;
        var offsetY1       = 0.0;
        var offsetX2       = 0.0;
        var offsetY2       = 0.0;
        var radius         = 125.;
        var angleSum1      = 0.;
        var angleSum2      = 0.;
        var vertexCount    = tmparr1.length;
        var xPts           = Array(vertexCount);
        var yPts           = Array(vertexCount);
        var angles         = Array(vertexCount);
        var pointPath      = "";
        var colorCount     = arrColors.length;

        var pieNode        = null;
        var gcNode         = null;
        
        var dataSum = 0.;

        for(var v=0; v<vertexCount; v++)
        {
           dataSum += Math.abs(parseFloat(tmparr1[v]));
        }
        //alert(dataSum);
        for(var v=0; v<vertexCount; v++)
        {
           angles[v] = 360.*Math.abs(parseFloat(tmparr1[v]))/dataSum;
        }
        //alert(angles);
        gcNode = svgDoc.getElementById("gc");
        var txtstyle = "text-anchor:left;";
        for(var v=0; v<vertexCount; v++)
        {
           angleSum2 = angleSum1 + angles[v];
           var txtpv = parseInt(Math.abs(tmparr1[v])/dataSum *10000) / 100 + "%";
           
           offsetX1 = radius*Math.cos(angleSum1*Math.PI/180);
           offsetY1 = radius*Math.sin(angleSum1*Math.PI/180);
           offsetX2 = radius*Math.cos(angleSum2*Math.PI/180);
           offsetY2 = radius*Math.sin(angleSum2*Math.PI/180);

           currentX = basePointX+offsetX2;
           currentY = basePointY-offsetY2;

          // the vertical offset must be subtracted,
          // so we need to "flip" the sign of offsetY1
           offsetY1 *= -1;

           pointPath = "M"+basePointX+","+basePointY;
           pointPath += " l"+offsetX1+","+offsetY1;
           if(angles[v] < 180 ) {
             pointPath += " A"+radius+","+radius+" 0 0 0 ";
           } else {
             pointPath += " A"+radius+","+radius+" 0 1 0 ";
           }
           pointPath += currentX+","+currentY;
           pointPath += " L"+basePointX+","+
                            basePointY+"z";

           fillColor  = "fill:" + arrColors[v%colorCount];

           txtGnode = tmparr2[v] + "," + tmparr1[v] + "," + txtpv;
           var newg = svgDoc.createElement("g");
           newg.setAttribute("onmouseover","ShowTooltip(evt,'" + txtGnode + "')" );
           newg.setAttribute("onmouseout","HideTooltip(evt)");
           gcNode.appendChild(newg);

           pieNode = svgDoc.createElement("path");
           pieNode.setAttribute("d",    pointPath);
           pieNode.setAttribute("style",fillColor);
           newg.appendChild(pieNode);
           
           var recNode = svgDoc.createElement("rect");
           recNode.setAttribute("x",253);
           recNode.setAttribute("y",(10 + v*20));
           recNode.setAttribute("width",8);
           recNode.setAttribute("height",8);
           recNode.setAttribute("style",fillColor);
           newg.appendChild(recNode);
           
           var txtNode = svgDoc.createElement("text");
           txtNode.setAttribute("x",264);
           txtNode.setAttribute("y",(15 + v*20));
           txtst = txtstyle + fillColor;
           txtNode.setAttribute("style",txtst);
           newg.appendChild(txtNode);
           texte=svgDoc.createTextNode(tmparr2[v] + "[" + txtpv + "]");
           txtNode.appendChild(texte);

           angleSum1 += angles[v];
        }
    }

    //设定x轴坐标,画线及添加标题,参数是年份数组
    function setXAxis(tmparr) {
      //画x轴线
      var newline = svgDoc.createElement("line");
      newline.setAttribute("x1",29);
      newline.setAttribute("y1",230);
      newline.setAttribute("x2",349);
      newline.setAttribute("y2",230);
      newline.setAttribute("style","stroke-width:2;stroke:blue");
      gnode.appendChild(newline);
      
      var t = tmparr.length - 1;
      var addv = 320 / t;
      var addt = 300 / t;
      var sumlv = 29;
      var sumtv = 20;
     //画x轴的文字
      newtext = svgDoc.createElement("text");
      newtext.setAttribute("x",sumtv);
      newtext.setAttribute("y",249);
      gnode.appendChild(newtext);
      texte=svgDoc.createTextNode(tmparr[0]);
      newtext.appendChild(texte);
      for(var i=0;i<t;i++) {
        //画x轴的小短线
        sumlv = 29 + (i + 1) * addv;
        newline = svgDoc.createElement("line");
       newline.setAttribute("x1",sumlv);
       newline.setAttribute("y1",0);
       newline.setAttribute("x2",sumlv);
       newline.setAttribute("y2",230);
       newline.setAttribute("style","stroke-width:0.5;stroke:white");
       gnode.appendChild(newline);
       //画x轴的文字
       sumtv = 17 + (i + 1) * addt;
       newtext = svgDoc.createElement("text");
       newtext.setAttribute("x",sumtv);
       newtext.setAttribute("y",249);
       gnode.appendChild(newtext);
       texte=svgDoc.createTextNode(tmparr[i+1]);
        newtext.appendChild(texte);
      }
    }

    //设定y轴坐标,画线及添加标题,第一个参数是最小值,第二个参数是最大值
    function setYAxis(tmpminv,tmpmaxv) {
      //画y轴线
      var newline = svgDoc.createElement("line");
      newline.setAttribute("x1",29);
      newline.setAttribute("y1",10);
      newline.setAttribute("x2",29);
      newline.setAttribute("y2",230);
      newline.setAttribute("style","stroke-width:2;stroke:blue");
      gnode.appendChild(newline);
      
      var addv = 220 / 10;
      var sumlv = 0;
      var sumtv = 4;

      tmpdiv = (tmpmaxv - tmpminv) / 10;
      tmpmaxv = Math.ceil(tmpmaxv + tmpdiv);
      tmpminv = Math.floor(tmpminv - tmpdiv);

      var divtxt = (tmpmaxv - tmpminv) / 10;
      for(var i=0;i<10;i++) {
        //画y轴的小短线
        sumlv = 10 + i * addv;
        newline = svgDoc.createElement("line");
       newline.setAttribute("x1",29);
       newline.setAttribute("y1",sumlv);
       newline.setAttribute("x2",349);
       newline.setAttribute("y2",sumlv);
       newline.setAttribute("style","stroke-width:0.5;stroke:white");
       gnode.appendChild(newline);
     }
     for(var i=0;i<11;i++) {
       //画y轴的文字
       //if(i == 0) {
         //sumtv = 10;
       //} else {
         sumtv = 10 + i * 22.5;
       //}
       txtdata = tmpmaxv - Math.round(divtxt * i);
       newtext = svgDoc.createElement("text");
       newtext.setAttribute("x",1);
       newtext.setAttribute("y",sumtv);
       gnode.appendChild(newtext);
       texte=svgDoc.createTextNode(txtdata);
        newtext.appendChild(texte);
      }
    }

    //设定公司的名称
    function setCompanyName(companyname) {
      parent.all['svgtitle'].innerHTML = companyname;
    }

    //设定图象的标题,涉及到下拉框和标题栏的同时变动
    function setGraphTitle(title) {
      //
    }

    //点击动态改变图象的函数,第一个参数是数值数组,第二个参数是年份数组
    //function svgViewChange(tmparr1,tmparr2) {
    function svgViewChange(tmparr1,tmparr2,type) {
      //数组清除
      //var tarr = new Array(tmparr1,tmparr2);
      //tarr = resortArray(tarr);
      arrUseValue = tmparr1;
      arrUseYear = tmparr2;
      resortArray();
      svgType = type;
      //arrUseValue = null;
      //arrUseYear = null;
      //arrUseValue = tarr[0];
      //arrUseYear = tarr[1];
      if(svgType == 1) {
        deleItem();
        useMinValue = getMinValue(arrUseValue);
        useMaxValue = getMaxValue(arrUseValue);
        setXAxis(arrUseYear);
        setYAxis(useMinValue,useMaxValue);
        drawPolyline(arrUseValue,useMinValue,useMaxValue);
      } else if(svgType == 2) {
        deleItem();
        useMinValue = getMinValue(arrUseValue);
        useMaxValue = getMaxValue(arrUseValue);
        setXAxis(arrUseYear);
        setYAxis(useMinValue,useMaxValue);
        drawRectange(arrUseValue,useMinValue,useMaxValue);
      } else if(svgType == 3) {
        deleItem();
        useMinValue = getMinValue(arrUseValue);
        useMaxValue = getMaxValue(arrUseValue);
        drawPie(arrUseValue,arrUseYear);
      }
    }

    function opennewwin() {
      window.open ('bigimg.html', 'svgnewwindow', 'height=400, width=400, top=100, left=100, toolbar=no, menubar=no, scrollbars=no,resizable=no,location=no, status=no');
    }

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/15 21:27:00
     
     rocmike 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(Java考了96分!)
      文章:15
      积分:337
      门派:XML.ORG.CN
      注册:2004/8/16

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给rocmike发送一个短消息 把rocmike加入好友 查看rocmike的个人资料 搜索rocmike在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看rocmike的博客8
    发贴心情 
    因为我才接触svg三天时间,很多东西都还没熟悉,这些代码还是很粗糙的。
    欢迎大家指正。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/15 21:31:00
     
     卷积内核 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      头衔:总统
      等级:博士二年级(版主)
      文章:3942
      积分:27590
      门派:XML.ORG.CN
      注册:2004/7/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给卷积内核发送一个短消息 把卷积内核加入好友 查看卷积内核的个人资料 搜索卷积内核在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 访问卷积内核的主页 引用回复这个贴子 回复这个贴子 查看卷积内核的博客9
    发贴心情 
    谢谢分享!努力哦

    ----------------------------------------------
    事业是国家的,荣誉是单位的,成绩是领导的,工资是老婆的,财产是孩子的,错误是自己的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/16 10:38:00
     
     rocmike 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(Java考了96分!)
      文章:15
      积分:337
      门派:XML.ORG.CN
      注册:2004/8/16

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给rocmike发送一个短消息 把rocmike加入好友 查看rocmike的个人资料 搜索rocmike在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看rocmike的博客10
    发贴心情 
    代码还在修改中。呵呵

    谢谢支持!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/16 15:55:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/6/16 8:36:06

    本主题贴数33,分页: [1] [2] [3] [4]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    226.563ms