Ознакомьтесь с Raphael , библиотекой javascript, которая охватывает VML в IE и SVG в браузерах, соответствующих стандартам. Он довольно прост в использовании и довольно хорошо задокументирован .
Конечно, элемент path
(используется для рисования многоугольника и полилиний) использует синтаксис строки пути SVG *1009*, который немного загадочный, но довольно простой для понимания. Конечно, вы можете расширить Raphael, чтобы использовать более простой синтаксис:
Raphael.fn.polygon = function () { // supply x,y coordinates as arguments
var self = this.path();
self.coords = [];
for (var i=0;i<arguments.length;i++) self.coords.push(arguments[i]);
self.update = function () {
var pathlist = [];
// the M command moves the cursor:
pathlist.push('M'+self.coords[0]+' '+self.coords[1]);
// the L command draws a line:
pathlist.push('L');
// Now push the remaining coordinates:
for (var i=2;i<self.coords.length;i++) {
pathlist.push(self.coords[i]);
}
// the Z command closes the path:
pathlist.push('Z');
self.attr('path',pathlist.join(' '));
}
self.update();
return self;
}
Что должно позволить вам сделать:
<div id="MyArea"></div>
<script>
var paper = Raphael("MyArea",640,480);
var mypolygon = paper.polygon(
10, 10,
20, 20,
10, 30
);
// you can even modify it after creation:
mypolygon.coords.push(15,20);
mypolygon.update();
</script>
Или создайте собственный API-интерфейс для полигонов, если вам не нравится мой.
РЕДАКТИРОВАТЬ: исправлены некоторые небольшие ошибки.