Raphael js - gettotalLength () и getBBox.width - PullRequest
3 голосов
/ 16 марта 2012

Может кто-нибудь сказать мне, почему общая длина горизонтального пути от точки (0,100) до (100,100) равна 200, а ширина BBox равна 100?

Вот код:

var p  = paper.path('M0 100 L100 100Z')
console.log(p.getTotalLength(), p.getBBox().width)
// Result 200, 100

1 Ответ

2 голосов
/ 19 марта 2012

Ответ на этот вопрос лучше всего иллюстрируется, когда мы пытаемся нарисовать квадратный путь, одна из сторон которого намеренно не указана в пути.

Допустим, мы хотим нарисовать квадрат размером с одну пользовательскую единицу, одна из сторон которого не включена в атрибут пути (d). Итак, мы получим r.path('M0 0L1 0L1 1L0 1Z'); или r.path(M0 0 1 0 1 1 0 1). Здесь мы явно не нарисовали последнюю сторону квадрата.

Мы ожидаем, что путь getTotalLength вернет 3, но вернет 4. Это потому, что перо должно закрыть путь от последней точки пути к первой точке пути (задание z ). Даже если вы не укажете z в конце атрибута пути d, перо будет перемещаться от своей последней точки на пути к первой точке пути с белым штрихом. Таким образом, общий нарисованный путь - это 3 стороны квадрата с черными чернилами и одна сторона квадрата с белыми чернилами, поэтому он возвращает 4. То же самое относится и к линиям.

...