我建议查看Raphael Javascript 图形库。它适用于所有浏览器(包括旧版本的 IE!),并且使用矢量图形,因此它生成的图形可以缩放和旋转而不会损失图像质量,甚至还包括动画功能。
这是一个使用 Raphael 制作一些非常漂亮的仪表的人的链接:
http://techoctave.com/c7/posts/17-jquery-dashboard-gauges-using-raphael-xhtml-and-css
但是,如果您想自己绘制,使用 Raphael 应该不难做到:它能够绘制圆环和形状,并为它们设置动画。看起来像您的示例的东西应该不难实现。
以下是我快速拼凑的一些代码作为示例:
<script type="text/javascript" src="raphael.js"></script>
<script type="text/javascript">
var gauge = Raphael('mydiv', 200, 100);
var semicircle = gauge.circle(100, 100, 100).attr({"fill": "#FF0000"});
var indicator = gauge.rect(0, 99, 100, 2);
indicator.animate({rotation: "30 100 100"}, 1000, "<>");
</script>
....
<div id='mydiv'></div>
我已经测试了该代码,它生成了一个工作表盘。它不像我上面链接的另一个示例那么漂亮,但它不使用任何外部图形,并且完全使用 Javascript 完成。唯一的外部依赖是 Raphael 库。
它显然需要一些工作来改进它以使其可用于您的场景,但这对您来说应该是一个相当好的开始。
希望对您有所帮助。
[编辑]
以上脚本适用于 Raphael v1.5。但是,Raphael v2 稍微改变了语法。
制作动画的行需要使用新的transform 语法,而不是已弃用的rotate 语法。所以编辑后的行如下所示:
indicator.animate({transform: "r30,100,100"}, 1000, "<>");
其余代码与上面相同。
有关transform 函数语法的更多信息,请参阅Raphael manual。