• 用VML画图(一些基本的矢量图)



    注:其中所有的left:top:都是针对图左上角的,比如圆,他的左上角应该是以圆为中心的矩形的左上角
    1.line(直线)

    a.示例:
    <html xmlns:v="urn:schemas-microsoft-com:vml">
    <head>
    <title>创建一条从(0,0)到(200,200)的红色的边框为2px的直线</title>
    <style>
    v\:* { behavior: url(#default#VML);}
    </style>
    </head>

    <body>
    <v:line strokecolor="red" strokeweight="2" style="z-index:5;position:absolute;left:233;top:150" from="0,0" to="200,200"/>
    </body>
    </html>

    b.专用属性:from    起点坐标;
                        to    终点坐标

    2.Oval(圆)
    a.示例:
    <html xmlns:v="urn:schemas-microsoft-com:vml">
    <head>
    <title>创建一个宽400高400边框为红色填充为绿色的圆</title>
    <style>
    v\:* { behavior: url(#default#VML);}
    </style>
    </head>

    <body>
    <v:Oval strokecolor='red' fillcolor='green' style='400;height:400'/>
    </body>
    </html>b.专用属性:无
    c.其他说明:其高宽主要由style中的width和height决定

    3.rect(矩形)
    a.示例:
    <html xmlns:v="urn:schemas-microsoft-com:vml">
    <head>
    <title>创建一个宽100高100的矩形</title>
    <style>
    v\:* { behavior: url(#default#VML);}
    </style>
    </head>

    <body>
    <v:rect style="position:absolute;z-index:1;left:320px;top:150px;100;height:100;"/>
    </body>
    </html>

    b.专用属性:无
    c.其他说明:其高宽主要由style中的width和height决定

    4.roundrect(圆角矩形)
    a.示例:
    <html xmlns:v="urn:schemas-microsoft-com:vml">
    <head>
    <title>创建一个圆角矩形</title>
    <style>
    v\:* { behavior: url(#default#VML);}
    </style>
    </head>

    <body>
    <v:roundrect style="position:absolute;z-index:1;left:220;100;top:100;height:100" fillcolor="red" strokecolor="red" strokeweight="1px" arcsize="0.15"/>
    </body>
    </html>

    b.专用属性:arcsize    描述圆矩形四角的弧度值,0-0.5,默认值0.05
    c.其他说明:其高宽主要由style中的width和height决定

    5.arc(圆弧)
    a.示例:
    <html xmlns:v="urn:schemas-microsoft-com:vml">
    <head>
    <title>创建一个圆弧</title>
    <style>
    v\:* { behavior: url(#default#VML);}
    </style>
    </head>

    <body>
    <v:arc style="z-index:1;left:110;100;position:absolute;top:10;height:100" startangle="-180" endangle="0"/>
    </body>
    </html>

    b.专用属性:startangle    圆弧的起点缺口,取值范围-360-360,默认值-180;
                        endangle    圆弧的终点缺口,取值范围-360-360,默认值null(0)
    c.其他说明:其高宽主要由style中的width和height决定

    6.polyline(多边形)
    a.示例:
    <html xmlns:v="urn:schemas-microsoft-com:vml">
    <head>
    <title>创建一个多边形</title>
    <style>
    v\:* { behavior: url(#default#VML);}
    </style>
    </head>

    <body>
    <v:polyline style="z-index:1;left:71;position:absolute;top:225" points="0,0,30,-40,100,100,0,0" filled="t" fillcolor="white"/>
    </body>
    </html>
    b.专用属性:points    各折点坐标,上例表示(0,0)、(30,-40)、(100,100)、(0,0)四个点

    7.curve(曲线)

    <html xmlns:v="urn:schemas-microsoft-com:vml">
    <head>
    <title>创建一条曲线</title>
    <style>
    v\:* { behavior: url(#default#VML);}
    </style>
    </head>

    <body>
    <v:curve style="z-index:1;left:100;position:absolute;top:300" from="0px,0px" to="150px,0px" filled='f' control1="75,150" control2="75,-150"/>
    </body>
    </html>

    b.专用属性:from    起点
                        to       终点
                        control1    曲线的第一个曲度
                        control2    曲线的第二个曲度
    c.其他说明:control1、control2可用都不用、用一个或用两个都用

    8.shape(任意形状)
    a.示例:
    <html xmlns:v="urn:schemas-microsoft-com:vml">
    <head>
    <title>创建任意曲线</title>
    <style>
    v\:* { behavior: url(#default#VML);}
    </style>
    </head>

    <body>
    <v:shape style="100;height:100" coordsize="100,100" filled="f" strokecolor="blue" path="m 0,0 l 100,100 e"/>
    <v:shape style="100;height:100" coordsize="50,50" filled="f" strokecolor="blue" path="m 0,0 l 0,100,100,100,100,0,0,0 e"/>
    <v:shape style="100;height:100" coordsize="100,100" filled="f" strokecolor="blue" path="m 0,0 l 0,100,100,100,100,0,0,0 e"/>
    <v:shape style="100;height:100" coordsize="100,100" filled="f" strokecolor="blue" path="m0,0 c130,-90,30,90,150,180 e"/>
    <v:shape style="100;height:100" coordsize="100,100" filled="f" strokecolor="blue" path="m0,0 c130,-90,30,90,150,180 x e"/>
    </body>
    </html>
    b.专用属性:path    路径(m    起点、 l     画直线、 c    画曲线、x    曲线自动闭合、 e    结束)
                       coordsize    比例(实际宽:width*100/coordsize第一个值;实际高:height*100/coordsize第二个值)
                       type    引用模板的名称
    9.shapetype(模板)
    a.示例:
    <html xmlns:v="urn:schemas-microsoft-com:vml">
    <head>
    <title>模板使用示例</title>
    <style>
    v\:* { behavior: url(#default#VML);}
    </style>
    </head>

    <body>
    <v:ShapeType id="m1" coordsize="1000 1000" fillcolor="yellow">
    <v:Path v="m0,0 l30,-30,60,0,0,0 e"/>
    </v:ShapeType>
    <v:Shape style="z-index:1;left:271;1000;position:absolute;top:225;height:1000" type="#m1"/>
    <v:Shape style="z-index:1;left:371;2600;position:absolute;top:225;height:4600" type="#m1"/>
    <v:Shape style="z-index:1;left:271;1000;position:absolute;top:300;height:1000" type="#m1" fillcolor="red"/>
    </body>
    </html>
    b.其他说明:shapetype是专门用来定义形状摸版的(不可见),而后在由shape标记引用、将模版实例化的按照path子属性值输出多边形(可见)。
    10.background(背景)
    a.示例:
    <html xmlns:v="urn:schemas-microsoft-com:vml">
    <head>
    <title>背景示例</title>
    <style>
    v\:* { behavior: url(#default#VML);}
    </style>
    </head>

    <body>
    <v:background fillcolor="white">
    <v:fill angle=50 type='gradient' color2="yellow"/>
    </v:background>
    </body>
    </html>
    11.group(容器)
    a.示例:
    <html xmlns:v="urn:schemas-microsoft-com:vml">
    <head>
    <title>容器示例</title>
    <style>
    v\:* { behavior: url(#default#VML);}
    </style>
    </head>

    <body>
    <v:group id="group1" style='position:absolute;left:0;top:0;z-index:1;100;height:100' coordsize="100,100">
    <v:oval style="left:100;top:100;50;height:50" fillcolor="white"/>
    <v:rect style="left:200;top:100;50;height:50" fillcolor="yellow"/>
    <v:rect style="left:100;top:200;80;height:80" fillcolor="red"/>
    <v:arc style="left:200;top:200;80;height:80" startangle="360" endangle="167" fillcolor="blue"/>
    </v:group>

    <v:group id="group2" style='position:absolute;left:100;top:100;z-index:1;100;height:100' coordsize="100,100">
    <v:oval style="left:100;top:100;50;height:50" fillcolor="white"/>
    <v:rect style="left:200;top:100;50;height:50" fillcolor="yellow"/>
    <v:rect style="left:100;top:200;80;height:80" fillcolor="red"/>
    <v:arc style="left:200;top:200;80;height:80" startangle="360" endangle="167" fillcolor="blue"/>
    </v:group>

    <v:group id="group3" style='position:absolute;left:100;top:100;z-index:1;200;height:200' coordsize="100,100">
    <v:oval style="left:100;top:100;50;height:50" fillcolor="white"/>
    <v:rect style="left:200;top:100;50;height:50" fillcolor="yellow"/>
    <v:rect style="left:100;top:200;80;height:80" fillcolor="red"/>
    <v:arc style="left:200;top:200;80;height:80" startangle="360" endangle="167" fillcolor="blue"/>
    </v:group>
    </body>
    </html>
    b.其他说明:当使用group后,容器内图形的left、top、width、height等值都是相对group的值。

    五、二级标记
    二级标记可以看作是对有限的属性进行扩展,就像CSS和HTML的关系一样,利用它我们可以做出更漂亮的图画出来,如上边background(背景)中就使用了fill二级标记,下边我们再来看下如何利用二级标记画一条带箭头的直线:

    <html xmlns:v="urn:schemas-microsoft-com:vml">
    <head>
    <title>二级标记示例</title>
    <style>
    v\:* { behavior: url(#default#VML);}
    </style>
    </head>

    <body>
    <v:line style="z-index:5;position:absolute;left:200;top:200" to="0,150" strokecolor="red" strokeweight="10px">
    <v:Stroke dashstyle="shortdot" endarrow='classic'/>
    </v:line>
    </body>
    </html>
    例子中的stroke即为二级标记,它可以用来设置边框样式,除此之外还有shadow(阴影)、fill(填充)、extrusion(立体3D)、textbox、imagedata(背景图片)等二级标记。二级标记也有自己的属性,我们只须通过设置这些属性就能画出各种漂亮的图来。二级标记的使用也非常简单,直接嵌套于图形标签中即可。

  • 相关阅读:
    bzoj 3438: 小M的作物
    bzoj 4445 [SCOI2015] 小凸想跑步
    hdu 4899 Hero meet devil
    hdu 4898 The Revenge of the Princess’ Knight
    【NOIP1999】拦截导弹
    【OpenJudge】2991:2011 题解
    【cqbzoj】1785:残缺棋盘上放车的方案数 --状压dp --输入毁一生
    【cqbzoj】:1330 Prime DP(Ahio2001 质数和分解)
    【Openjudge:Noi】7891:一元三次方程求解 c++
    【USACO FEB 2010 SILVER】吃巧克力(Chocolate Eating)
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/902605.html
Copyright © 2020-2023  润新知