<v:shapetype id="arrowLeft" coordsize="6 6">
<v:path v="m 6,6 l 0,3,6,0,6,0 x e" />
</v:shapetype>已经实现了,但是是瞎掰的啊!!!哪位高手能引导一下小弟怎么搞这个VML这个东东!!

解决方案 »

  1.   

    http://home.kimo.com.tw/nanashi_07/enote/vml/path.html
    有关于Path的详细解释。
      

  2.   

    msdn.microsoft.com上有VML详细的用法
      

  3.   

    万分感谢,你可知道我今天进了很多次CSDN,想看看有没有人回复,每次来都是失望,失望、再失望、、、to fancuixia(范翠霞) 你真好!
      

  4.   

    再问,我现在在会一个菱形得到
    <v:shape 
    style="MARGIN-TOP: 0pt; Z-INDEX: 1; MARGIN-LEFT: 0pt; WIDTH: 60pt; POSITION: absolute; HEIGHT: 60pt" 
    coordsize = "21600,21600" o:spt = 
    "9" path = "m@0,0l0,10800@0,21600@1,21600,21600,10800@1,0xe" ></v:shape>
    我现在想把coordsize="12,12" 对应的PATH我就得到path = "m@0,0l0,6@0,12@1,12,12,6@1,0xe" 但菱形就是不出来,“@”我看了帮助,也不是很清楚是啥意思,能否跟我说说吗,还有就是怎么把对应的path得出来
      

  5.   

    @的意思是Formulas方程式的一个变量,比如
    <v:shape 
    style="MARGIN-TOP: 0pt; Z-INDEX: 1; MARGIN-LEFT: 0pt; WIDTH: 60pt; POSITION: absolute; HEIGHT: 60pt" 
    coordsize = "21600,21600" o:spt = 
    "9" path = "m@0,0l0,10800@0,21600@1,21600,21600,10800@1,0xe" >
    <v:formulas>
    <v:f eqn="val 21600">
    </v:formulas>
    </v:shape>
    就是说把方程式中的第一个值(21600)传递给path
      

  6.   

    恍然大悟!原来如此,看来自己觉悟不高啊!看了hyee(小狗旺财)的回复,终于明白了,
    我还有个简单(对于VML已经入门的来说,肯定是简单的)问题,下面是一个帮助
    //begin help
     <v:textbox /> 
    文字方塊(用於用於描述其它vml元件)
    CSS屬性:
    padding :  
    padding-bottom : 預設為0.05in 
    v-text-anchor : 對齊,有top , middle , bottom , top-center , middle-center , bottom-center , top-baseline , bottom-baseline , top-center-baseline , bottom-center-baseline 
    v-text-wrapping : 換行,true或false 
    Clayout-flow : horizontal , vertical , vertical-ideographic , horizontal-ideographic
    //end help
    这是我的代码
    <v:textbox valign="middle" style="MARGIN-TOP:
     5.062pt; FONT-SIZE: 20pt; LEFT: auto; MARGIN-LEFT: 8.656pt; WIDTH: 134.187pt; COLOR: maroon; FONT-FAMILY: impact; TOP: auto; HEIGHT: 146.375pt; BACKGROUND-COLOR: white;">e-note</v:textbox>
    //end code
    依据上面的帮助</v:textbox>不是有一个属性v-text-anchor 可以设置文字左右方向的左中右和上下方向的上中下,为什么我在style属性里加v-text-anchor=middle-center 一点效果都没有的?????
        分不够可以再加!!
      

  7.   

    m 表示 move to
    l 表示 line to
    x 表示 话闭合图形
    e 表示 end
      

  8.   

    v-text-anchor 和 v-text-wrapping ie5并不支持,office支持
      

  9.   

    那除了在table居中外,能不能不加元素外(直接设置属性)居中,我不想再加元素了,这对我来说不好操作
    <v:textbox valign="middle" align="middle" style="MARGIN-TOP:
     5.062pt; FONT-SIZE: 20pt; LEFT: auto; MARGIN-LEFT: 8.656pt; WIDTH: 134.187pt; COLOR: maroon; FONT-FAMILY: impact; TOP: auto; HEIGHT: 146.375pt; BACKGROUND-COLOR: white">
    <table width="100%" height="100%">
    <tr>
    <td align="middle">
    e-note 
    </td>
    </tr>
    </table>
    </v:textbox>
      

  10.   

    一般textbox元素是不设置style的。那个margin应用inset代替。
    <v:textbox ...style="...;text-align:cente;vertical-align:middle"。不过许多情况下,在td之外的元素使用vertical-align经常没有效果
      

  11.   

    如果是这样的话,那我觉得加不加<v:textbox>都没起多大作用,我何不再画完图形之后就直接加html的元素,如div,label,table 那<v:textbox>真的是无用武之地了
      

  12.   

    不一样,不一样。用texbox可以防止htmly元素与vml元素的位置发生偏移。
      

  13.   

    刚才打了好多,突然保存不了,全没了 555555
    我现在是用VML画简单的流程图,越写下去,就遇到越多的问题
    1。找点问题(我们用VISIO的时候,画一条曲线,移动到一个用例图附近的时候,曲线会自动连到用例图),想问一下是不是通过遍历每个元素,然后判断位置和曲线位置相符合来找的,这种方法可行吗?
    2。流程图如何存储到XML,或者数据库,我看有些软件(不是很著名的),它每画一个流程图的时候就已经加载了一个开始活动,和结束活动这个两个流程步骤,我猜它是这样存的:通过找开始活动图的位置,找到链接它的曲线,通过曲线的位置找到下一个流程步骤,这样做的话,是不是很繁琐啊!还有什么更好的方法?
    说了那么多,是不是觉得我很烦呢?!(从来没有这样在CSDN发过这么长的帖子)
    用VML+javascript+xml+数据库可行吗??这个是我最担心的问题啊!!
    先COPY,防止保存不了
      

  14.   

    1、画流程图,需要把所有vml元素放在vml group元素之中,例图(你说得是不是图片文件?)则需要用fill元素指定(其实也有别的方法,只不过我觉得放在fill中最好),通过判断两个流程标签的位置来确定一条连接曲线是可行的,但是动态画流程图存在一个大难点,就是怎样防止曲线重合。动态画一个复杂的流程,标签定位倒是小事,防止曲线重合可比较困难哦!
    2、尝试在服务器端生成流程图可不是一个好办法哦,最好先把相关的数据发送到客户端,客户端再根据发送的数据生成一个xmldom或者数组,然后在客户端画图更好。
    3、vml可以同xml合起来,我觉得接洽的很好。示例的xml文件请见http://home.kimo.com.tw/nanashi_07/enote/vml/tem.vml
    示例的使用文件见
    http://home.kimo.com.tw/nanashi_07/enote/vml/imagedata.html
    就是fancuixia(范翠霞)朋友说的那个网站,想必你有看过,vml,xslt,xml三者结合也可以做到,具体找msdn,我也忘了地址是什么了。可是上述这两种方法都没有
    js+vml+vml Shapetype元素快。vml+javascript+xml+数据库绝对可行,可别老想钻牛角尖,一定有许多折衷的方法。
      

  15.   

    看来还得向  hyee(小狗旺财) fancuixia(范翠霞)等朋友学习啊!
    防止曲线重合,我想能否这样做:
    就是在曲线增加多一个linkTo属性,它表明是从usercase1指向usercase2,当再画一条曲线的时候,通过document.all.tags("line")循环找曲线并且痛linkTo属性判断两个用例(步骤)之间是否已经存在曲线,如果存在的话,则警告,否则画之,你认为呢??
    <v:line style=\"POSITION: relative\" linkTo="usercase1,usercase2" from = \""+oldX + ","+oldY+" \" to = \""+newX+","+newY+"\"></v:line>
      

  16.   

    <v:line style=\"POSITION: relative\" linkTo="usercase1,usercase2" from = \"expression(usercase1.style.left),expression(usercase1.style.top)\" to = \"expression(usercase2.style.left),expression(usercase2.style.top)\"></v:line>好像不支持expression的,当我移动图的时候,我是想连接的图形的曲线也跟着移动,但好像expression不支持似的,岂不是还要手动再写几行代码??55555
      

  17.   

    也是的,我现在不想那么多,只想能普通实现画流程图,至于美观是否美观还是等下个版本吧! 图象移动时曲线(在我的程序中,应该是直线)跟着移动,就是我上面expression的问题,你是如何解决的,我有个很方法不过是很复杂,觉得不可行,移动元素的时候,因为已经有了LINKTO这个属性,就可以找曲线,然后再跟随元素一起移动,做是能做到,不过觉得繁琐,麻烦!!你当时也是开发流程图的吗?还是别的?
      

  18.   

    我看你的代码很不像放在一个group里面的,否则很容易定位。
    比如一个group的coordsize='21600,21600',它的一个rect的位置是:
    left:0;top:0;width:2000;height:2000;那么要连接到该rect的右边的中点,该点就是
    2000,1000。放在group里面可以减少复杂度。不过coordsize要适量大一些。因为如果太小,线条有时候会显得模糊。
      

  19.   

    我的是放在GROUP里面的了,如果不放的话,根本无法定位,这个问题我以前也问过,一直没人回答,后来还是搜索CSDN的,找了一个记不起名字了(真的很对不起),发短信,然后他才告诉我用GROUP里,关于coordsize其实我有时理解,有是又很不理解,慢慢还是会理解的了,刚才那个曲线随元素移动已经做好了,还有细节没做就是连到图的哪个点,要不就更难看了,下午的工作有可能就是验证流程图是完整的,然后就是从开始活动-》标准活动-》结束活动按照流程步骤存到数据库,也不难,但也是繁琐。。难的应该还在后头,就是流程跟表单怎么结合???
      

  20.   

    我主要开发企业管理软件,使用VML动态生成各种图表,如PIE图,曲线图,块状图等。对于流程图的开发,用Delphi做过,还没有用VML开发过。不过可能原理都是一样的。  的确流程图里节点的连线一般都是折线,好处理一些,并且比较美观。
      

  21.   

    我觉得与其是vml和表单结合,不如说是xml与操作结合。我当时的做法是:
    用一个xml文件掌控整个流程(包括可执行操作以及执行该操作的权限),
    而vml只不过是该xml文件的外在表现方式。流程图可以根据等级(level属性)和位置(name属性)唯一确定一个标签,
    而某一个标签可能有不同的状态(即流程的状态),在某一个的状态下可能有
    一些可执行操作,执行某一个操作中,它将会改变流程的状态,也可能跳跃到
    不同的标签。所以,一个标签的某一个操作就表现为一条曲线。如果你明白上面的原理,
    流程图与表单的结合就好办了。
      

  22.   

    本来我是这样想的 1是流程的开始 而4是流程的结束
    1->2 2->3 2->4 3->4
    <work>
      <流程步骤>
         <1-2/>
         <2-3/>
         <2-4/>
         <3-4/>
      </流程步骤>
      <流程图>
         <1>
             <!--这里记录此流程步骤用到的表单号,权限,表单用到的数据表的字段是否显示,只读 同一个表单有可能多个地方用到-->       
         </1>
         <2>
             <!--以上相同->
         </2>
      </流程图>
    </work>
    而记录整个流程图的VML的控件属性以及一些说明我是在另外一个XML,如果在上面xml文件的话我觉得更方便。我现在担心的就是javascript的下的xmldom好像不支持xPath的一些函数,xsl才支持(不知道我说的对不对)如file://*[string-length(name())=n]选择所有有n个字符的元素。执行到前流程找下一个流程的时候就不好办了。你认为上面的可行吗??
    还有就是我现在是这个流程图画好了一次性保存的,而现在如果涉及到流程图步骤涉及到的表单,数据表,以及权限的话,那么多数据就不知往哪里放,而如果每涉及一个流程步骤及时更新XML的话,又觉得没必要!
      

  23.   

    我觉得这个XML结构没设计好的话,对下一步编程那就麻烦多了!
      

  24.   

    我觉得不是很好哦!所有的曲线都是基于标签而产生的,那么标签应该作为跟结点下的子节点.我举个例子,可以根据自己的需要调试一下.
    <workflow>
    <tag name="1" level="1">  <!--name相当于确定横坐标,level相当于确定纵坐标-->
    <status value="__NEW">    <!--__NEW表示新的提交-->
        <action name="申请">  <!--在这个状态下可以执行的操作,并为这个操作起一个名字-->
            <mode name="R01"/> <!--把提交申请的权限赋予角色R01,因为也许有多个角色有此权限,所以不能设为属性-->
            <toTag="2" />  <!--要到达的标签-->
            <toStatus value="正在申请"/>  <!--申请成功后状态的值-->
            <page name="apply/test.asp"/> <!--可以执行本操作的文件,从而通过模块载入该文件时,可以动态确定该文件要执行的操作-->
        </action>
    </status>   <!--因为在相同状态下可以有多个操作,所以status应作为tag的子节点-->
    </tag>
    <tag level="2" name="2">
    </workflow>
    其实搞流程的时候建立这么一个控制文件是很有必要的.越复杂的流程越显示出它的重要性,因为它可以防止逻辑混乱.如果你可以作出通用模版,并且以后的项目与流程有关,那么你只需要花一半的时间.
      

  25.   

    周六日都没上网,不好意思!第一次搞工作流显得还是很嫩.
    像如果权限的话,有可能赋予的不止是角色,还有可能是部门,或者是个人的
    1.
    <mode name="{R01},[D01],P01" /><!--{}表示角色[]表示部门,P01表示员工代号-->
    2.
    <mode>
      <mode_R name="R01"/>
      <mode_D name="D01"/>
      <mode_P name="P01"/>
    </mode>
    3.
    <mode>
      <item name="Role">R01</mode>
      <item name="Dept">D01</mode>
      <item name="Userno">P01</mode>
    </mode>
    还是另有比较好的方法??
      

  26.   

    to hyee(小狗旺财):请进
    http://expert.csdn.net/Expert/topic/1810/1810050.xml?temp=.8042566