Вот ссылка на jsfiddle с некоторыми примерами http://jsfiddle.net/pukster/sdQ7U/2/
Я предполагаю, что fabric.js рассчитывает все от начала координат (средней точки), поскольку он рисует ровно одну четверть прямоугольника даже с холстом, в 10 раз превышающим размер прямоугольника. Я предполагаю, что top
и left
на самом деле относятся к началу координат, а не к верхней и левой сторонам воображаемой ограничительной рамки. Беда в том, что документации по фабрике очень мало. Есть ли причина, по которой вы используете fabricjs, а не easeljs
РЕДАКТИРОВАТЬ Вот та же скрипка, но с квадратами вместо прямоугольников (это более понятно) http://jsfiddle.net/pukster/sdQ7U/3/
РЕДАКТИРОВАТЬ ОК Теперь я почти абсолютно уверен, что fabric.js использует центр как top
/ left
. Я сорвал их пример с их сайта и наложил его на прозрачную купер-часть, чтобы эти фигуры были закодированы в чистом холсте http://jsfiddle.net/pukster/uathZ/2/ (синяя рамка - это предел элемента canvas).
То, что вы видите, это то, что поля точно смещены наполовину, но круг (я нарисовал только полукруг, иначе он не был бы различим) совершенно перекрыт. Это б / к в HTML Canvas, координаты круга (x,y)
относятся к началу координат, а не к верхнему левому углу. Я не беспокоился о треугольнике, потому что моя тригонометрия немного ржавая. Лично я считаю, что вводить в заблуждение термины top
и left
вводит в заблуждение, когда x
и y
были бы более представительными и более короткими.