zoukankan      html  css  js  c++  java
  • Elliptical Arcs with SVG

    Elliptical Arcs with SVG

    An elliptical arc draws an arc from the current point to a specified point. The arc command begins with the x and y radius and ends with the ending point of the arc. Between these are three other values: x axis rotation, large arc flag and sweep flag. The x axis rotation is used to rotate the ellipse that the arc is created from. This rotation maintains the start and end points, whereas a rotation with the transform attribute (outside the path description) would cause the entire path, including the start and end points, to be rotated. The large arc flag and sweep flag control which part of the ellipse is used to cut the arc. These are needed because there's more than one way to place an ellipse so that it includes the start and end points.

    Varying x-axis-rotation Example

    The leftmost arc has 0 degrees x-axis rotation, the top-middle arc has 30 degrees, the bottom-middle has 45 degrees and the rightmost has 135 degrees. Notice in the source that only the first move command and the angle change since I've used relative coordinates.

    <?xml version="1.0" standalone="no"?>
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> 
    <svg viewBox = "0 0 1100 400" version = "1.1">
        <stroke = "black" stroke-width = "3" fill = "none">
            <path d = "M 50 200 a 100 50 0 1 1 250 50"/>
            <path d = "M 400 100 a 100 50 30 1 1 250 50"/>
            <path d = "M 400 300 a 100 50 45 1 1 250 50"/>
            <path d = "M 750 200 a 100 50 135 1 1 250 50"/>
        </g>
    </svg>

    Varying Large Arc and Sweep Flags Example

    This example is similar to the one in the w3c specification.

    <?xml version="1.0" standalone="no"?>
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> 
    <svg viewBox = "0 0 1100 400" version = "1.1">
        <stroke = "navy" stroke-width = "3" fill = "none">
            <path d = "M 300 50 a 150 50 0 0 0 250 50"/>
            <path d = "M 300 200 a 150 50 0 0 1 250 50"/>
            <path d = "M 700 50 a 150 50 0 1 0 250 50"/>
            <path d = "M 700 200 a 150 50 0 1 1 250 50"/>
        </g>
        <text-anchor = "middle" font-size = "25" font = "sans-serif">
            <text x = "400" y = "20">
                large-arc-flag=0
            </text>
            <text x = "825" y = "20">
                large-arc-flag=1
            </text>
        </g>
        <text-anchor = "end" font-size = "25" font = "sans-serif" rotate = "0">
            <text x = "230" y = "70">
                sweep-flag=0
            </text>
            <text x = "230" y = "220">
                sweep-flag=1
            </text>
        </g>
    </svg>
    参考:http://www.svgbasics.com/arcs.html
  • 相关阅读:
    VTK初学一,动画加AVI录制终于做出来了
    QCamera获取摄像头图像(转载)
    VTK初学一,比较常见的错误2
    myeclipse2014鼠标单击后光标位置背景底色为白色太难看,行号显示
    记一次跟二房东公司(非中介个人房源无中介费)租房的经历
    求16进制数据或运算后的值(即多个16进制相加的和)
    error LNK2001: 无法解析的外部符号 "public: char * __thiscall
    如何利用指向数组的指针得到数组元素个数?
    C++判断字符串是否为空的一个小问题
    C++开发中BYTE类型数组转为对应的字符串
  • 原文地址:https://www.cnblogs.com/yjstonestar/p/5003731.html
Copyright © 2011-2022 走看看