<!DOCTYPE html>
<html> <head>
<meta charset="utf-8">
<title>SVG Draw Arc</title>
<style media="screen">
.svgs{display: flex; flex-flow:row wrap; justify-content: space-around; width: 620px; margin: 0 auto;}
.svgs svg{width:300px; height:200px; background: #F2F2F2; margin-bottom: 10px;}
</style>
</head> <body>
<div class="svgs">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg">
<path d="M 150 0 L 150 200 M 0 100 L 300 100" stroke="#CCC" stroke-width="1" />
<path id="path1" d="" stroke="#000" fill="green" fill-opacity="1" />
</svg>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg">
<path d="M 150 0 L 150 200 M 0 100 L 300 100" stroke="#CCC" stroke-width="1" />
<path id="path2" d="" stroke="#000" fill="green" fill-opacity="1" />
</svg>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg">
<path d="M 150 0 L 150 200 M 0 100 L 300 100" stroke="#CCC" stroke-width="1" />
<path id="path3" d="" stroke="#000" fill="green" fill-opacity="1" />
</svg>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg">
<path d="M 150 0 L 150 200 M 0 100 L 300 100" stroke="#CCC" stroke-width="1" />
<path id="path4" d="" stroke="#000" fill="green" fill-opacity="1" />
</svg>
</div>
</body>
<script type="text/javascript">
function changeArcDeg(path, d){
path.setAttribute("d", d);
}
function drawArcByRadiusDeg(startX, startY, r, deg, clockwise) {
var cw = typeof clockwise !== 'undefined' ? clockwise : 1;
var x = startX - r + r*Math.cos(deg*Math.PI/180);
var y = startY + (1===cw ? 1 : -1)*r*Math.sin(deg*Math.PI/180);
var bigOrSmall = deg > 180 ? 1 : 0;
var line = " L" + (startX - r) + " " + startY + " L"+startX + " " + startY + "Z";
return "M " + startX +" "+ startY + " A "+ r +" " + r + " 0 " + bigOrSmall + " " +cw+ " " + x + " " + y + line;
}
function run(pid, deg, clockwise){
var path = document.getElementById(pid);
var x = 200, y = 100, r = 50, add = 0===deg ? true : false;
setInterval(function(){
if(deg>360) deg -= 360;
if(deg<0) deg += 360;
path.setAttribute("d", drawArcByRadiusDeg(x, y, r, add ? deg++ : deg--, clockwise)) ;
}, 10);
}
window.onload = function(){
run('path1', 0, 1);
run('path2', 0, 0);
run('path3', 360, 0);
run('path4', 360, 1);
};
</script>
</html>

svg绘制圆弧的更多相关文章

  1. 使用SVG绘制湖南地图

    项目中有需求使用SVG绘制湖南地图,现把自己制作过程写一下供大家参考. 1.首先准备一张湖南地图(仅有各市边界线即可).(图片最好是PNG的,除了地图其它什么也没有) 2.准备SVG编辑工具SVGDe ...

  2. 使用canvas元素-art方法绘制圆弧

    最近在学习HTML5,发现canvas真的很棒,canvas元素是一种可供绘图的平面,我们用JavaScript对它进行配置和操作.我这里说一下arc方法绘制圆弧,顺便提一下涉及到的基础知识. 首先看 ...

  3. wpf 后台绘制圆弧

    wpf 前台绘制圆弧很简单,如:<Path x:Name="path_data" Stroke="#FFE23838" StrokeThickness=& ...

  4. SVG Drawing Animation - SVG 绘制动画

    一个小实验,探索 SVG 线图动画的使用情况,以前沿的展示形式呈现图形或网站元素的外观,模拟它们的加载.SVG 真的很强大,有许多创造性和可能性,使用 SVG 可以制作各种有趣的网站交互效果.今天这篇 ...

  5. [原]Wpf应用Path路径绘制圆弧

    1. 移动指令:Move Command(M):M 起始点  或者:m 起始点比如:M 100,240或m 100,240使用大写M时,表示绝对值; 使用小写m时; 表示相对于前一点的值,如果前一点没 ...

  6. 调用gluNurbsCurve绘制圆弧

    <OpenGL编程指南>第12章第3小结专门介绍调用GLU绘制NURBS曲线或曲面,很可惜的是并未给出绘制圆弧的例子.网上可以找到很多绘制整个园的例子,却没圆弧例子,自己瞎折腾了2个礼拜, ...

  7. html 5新特性 --用SVG绘制的微信logo

    一个简单的SVG绘制图片的小案例. 效果图: 代码如下: <style> * { ; ; } body { background-color: #d5d3d4; } .container ...

  8. SVG绘制圆形简单示例分享

    今天分享“svg绘制圆形”部分 1.简单圆形 效果图如下: 关键代码: <svg xmlns="http://www.w3.org/2000/svg" version=&qu ...

  9. 18个超有趣的SVG绘制动画赏析

    SVG作为时下比较新颖的技术标准,已经建立了很多基于SVG的前端项目.由于SVG在绘制路径上非常灵活,我们将很多网页上的元素使用SVG来绘制而成,有各种人物.小图标.小动画等等.今天我们收集了18个非 ...

随机推荐

  1. coderforces 721b

    题目描述: B. Passwords time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  2. 使用NUget发布自己的dll(转)

    一:Nuget控制台有几个常用命令 Get-Package 获取当前项目已经安装的类库 Install-Package 安装指定类库,命令格式如下:Install-Package 类库ID,示例:PM ...

  3. centos 安装 python2.7 运行webpy 项目

    1.服务器是centos5,在virtualbox里装的.网络选择桥接,ip与主机在一个网段类.主机ip为xxx.xxx.xxx.69,服务器ip定义为xxx.xxx.xxx.66,GATEWAY与N ...

  4. mybatis一级缓存和二级缓存

    1.一级缓存:session级别 执行以下操作之后一级缓存消失: 1)执行了session.clearCache(); 2)执行了CUD操作后 3)执行了session.close() 2.二级缓存: ...

  5. Codeforces 28C [概率DP]

    /* 大连热身D题 题意: 有n个人,m个浴室每个浴室有ai个喷头,每个人等概率得选择一个浴室. 每个浴室的人都在喷头前边排队,而且每个浴室内保证大家都尽可能均匀得在喷头后边排队. 求所有浴室中最长队 ...

  6. U-Boot GOT表分析和u-boot.lds解读

    转自:http://blog.sina.com.cn/s/blog_70dd16910100zab6.html u-boot-2010.09/arch/powerpc/cpu/mpc86xx/star ...

  7. WGS84经纬度坐标与北京54坐标或者西安80坐标的关系

    一般来讲,GPS直接提供的坐标(B,L,H)是1984年世界大地坐标系(WordGeodetic System 1984即WGS-84)的坐标,其中B为纬度,L为经度,H为大地高即是到WGS-84椭球 ...

  8. Bigendian 奇数内存地址取整形crash

    在大端机器(solaris-sparc,hpux-hppa)上从奇数内存地址取一个整形(2 or 4 bytes)会崩溃.如: unsigned short Res = *(unsigned shor ...

  9. Create a geoprocessing tool to buffer a layer and retrieve messages____sync

    using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropSer ...

  10. c++学习--继承与派生

    继承和派生 1 含有对象成员(子对象)的派生类的构造函数,定义派生类对象成员时,构造函数的执行顺序如下: 1 调用基类的构造函数,对基类数据成员初始化: 2 调用对象成员的构造函数,对对象成员的数据成 ...