![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| VanHelsing |
|
||||
![]() ХОЧУ ВСЕ ЗНАТЬ!!! ![]() ![]() Награды: 1 Профиль Группа: Участник Сообщений: 288 Регистрация: 3.1.2008 Где: Екатеринбург Репутация: нет Всего: 6 |
Здравствуйте. Есть необходимость создать небольшой графический редактор на JavaScript. Нашел пример кода для рисования линии. Дописал рисование прямоугольника, но не знаю как сделать чтобы при движении мыши "старый" прямоугольник удалялся, а отрисовывался только текущий?
Также если возможно хотелось бы узнать как более правильно организовать такой редактор и какие ошибки есть в приведенном коде. |
||||
|
|||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
Гугл говорит, что это тебе поможет:
|
|||
|
||||
| VanHelsing |
|
|||
![]() ХОЧУ ВСЕ ЗНАТЬ!!! ![]() ![]() Награды: 1 Профиль Группа: Участник Сообщений: 288 Регистрация: 3.1.2008 Где: Екатеринбург Репутация: нет Всего: 6 |
Изменил код отрисовки прямоугольника по движению мыши. При рисовании в сторону увеличения рисуется нормально, но если начать рисовать в сторону уменьшения, то все прямоугольники остаются.
|
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
Что-то мне подсказывает, что первые два параметра должны всегда быть нулями, а 3 и 4 должны равняться ширине и высоте всего канваса.
|
|||
|
||||
| VanHelsing |
|
|||
![]() ХОЧУ ВСЕ ЗНАТЬ!!! ![]() ![]() Награды: 1 Профиль Группа: Участник Сообщений: 288 Регистрация: 3.1.2008 Где: Екатеринбург Репутация: нет Всего: 6 |
Этот метод будет работать если мы будем рисовать только один прямоугольник, но в этот момент на canvas могут быть нарисованы другие фигуры. При таком подходе будет все очищаться.
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 3 Всего: 260 |
ну, дык, алгоритмическое решение должно быть, а не магическая функция "сделать как надо".
вариант 1: два канваса. верхний, который и перехватывает движение мыши — чисто для отрисовки прямоугольника в процессе создания. очищать можно весь канвас целиком. после отпускания кнопки прямоугольник рисуется "навечно" на нижнем канвасе. вариант 2: каждая фигура — отдельный объект. после очистки канваса на любой чих, пробегаешься по списку всех таких объектов и отрисовываешь их. вариант 2 медленнее, но проще реализовать выбор существующей фигуры и измение её. вариант 1 быстрый, но не универсальный. |
|||
|
||||
| VanHelsing |
|
|||
![]() ХОЧУ ВСЕ ЗНАТЬ!!! ![]() ![]() Награды: 1 Профиль Группа: Участник Сообщений: 288 Регистрация: 3.1.2008 Где: Екатеринбург Репутация: нет Всего: 6 |
Я решил попробовать и расположил 2 canvas в разных местах, для того чтобы просто скопировать изображение с одного на другой.
Это код который срабатывает когда на основном canvas отпускают кнопку мыши (объект canvas создается только один). В переменную массив пикселей сохраняется, но во второй canvas не вставляется. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |