Javascript рисовать динамическую линию
Я ищу код Javascript, позволяющий пользователю рисовать линию (на изображении).
Как и линейный инструмент в Photoshop (например):
пользователь нажимает на изображение, перетаскивает мышь (в то время как линия между начальной точкой и точкой мыши динамически рисуется при перетаскивании мыши).
Мне также понадобится вызываемая функция для отправки странице координат начала и конца.
Я нашел этот очень хороший скрипт для области выбор: http://www.defusion.org.uk/code/javascript-image-cropper-ui-using-prototype-scriptaculous/
и я нашел много сценариев для рисования линий (и других фигур в JS), но не смог найти то, что я ищу.
спасибо
7 ответов
поскольку нет стандартного метода рисования, Если вы хотите поддерживать старые браузеры и IE,
вам нужно будет использовать библиотеку. Библиотека будет обрабатывать кросс-платформенные вопросы рисования с помощью SVG
или Microsoft VML
рекомендую Рафаэль JS
Рафаил.js-это легкий инструмент рендеринга для javascript (MIT licensed), который работает в FF, Safari, Chrome и IE6+.
он использует SVG для первых 3 и VML для IE, но API идентичен в браузерах и очень сладкий.
например
// Creates canvas 320 × 200 at 10, 50
var paper = Raphael(10, 50, 320, 200);
// Creates circle at x = 50, y = 40, with radius 10
var circle = paper.circle(50, 40, 10);
// Sets the fill attribute of the circle to red (#f00)
circle.attr("fill", "#f00");
// Sets the stroke attribute of the circle to white
circle.attr("stroke", "#fff");
я использовал его для рисования линии при перетаскивании и могу поручиться за его простоту использования
кросс-браузерное решение для рисования линий на javascript, не требующее каких-либо внешних библиотек, можно найти здесь: http://bytes.com/topic/javascript/answers/88771-drawing-vector-lines-javascript
Это работает во всех браузерах, включая IE.
рассмотрите возможность использования canvas
элемент для отображения изображения. Тогда рисование линии (или чего-либо еще) на ней тривиально.
Если ваша математика достаточно хороша, можно (хотя и безумно) сделать это без тега canvas для большинства современных браузеров, используя один из (по мере необходимости):
- - webkit-transform: rotate
- - moz-transform: поворот
- - o-преобразование-поворот
- Матричный Фильтр Трезубца
создать например. 1px высокий div, например. граница-верхняя часть для вашей "линии", и с помощью мыши перетащите событие в положение и повернуть его.
безумие лежит здесь но это было бы довольно забавное упражнение. (Вы должны использовать что - то вроде Raphael JS, который является кросс-браузером и вменяемым-см. выше)
Я работаю над чем-то подобным. Нарисовать линию на холсте довольно просто. Вы можете взять из моего кода здесь.
http://p-func.com/html5_test/test2.html
просто следуйте за прослушивателем mousedown.
хотя я обнаружил, когда хочу загрузить изображения, что библиотека Рафаэля может быть лучше использовать. Я видел это, потому что холст, кажется, действует как плоское изображение. Поэтому, если я хочу добавить к нему aimge, позвольте пользователю манипулировать этим образ, он не позволит мне (если нет чего-то, чего мне не хватает).
Рафаэль позволяет рисовать и по-прежнему использовать эти рисунки и изображения в качестве объектов.
при поддержке вы можете использовать canvas, в IE вы используете функцию поворота фильтров. А вот так: