![]() |
Мягкая кисть во Флеш-рисовалке
Здравствуйте. Есть небольшая рисовалка, написанная на АС3. Инструмент кисть работает следующим образом: пользователь щелкает мышью, потом с помощью события MouseMove отрисовывается линия от начальной точки к текущим координатам курсора, потом к следующим координатам курсора и т.д. В итоге получается непрерывная кривая (мазок). Цвет и толщина мазков (линии) определяется пользователем. Но дело в том, что хочу сделать возможность настраивать мягкая/твердая кисть (размытые/четкие края мазка как в фотошоп).
Подскажите, пожалуйста, как реализовать такое. |
С помощью drawTriangles(). Создать битмапдату с линейным вертикальным градиентом (верх и низ мягкие, середина сплошная). И рисовать не линию, а полигон из двух треугольников, текстурированных этой битмдатой. Получится линия с мягкими краями. По аналогии начало/конец линии создаются с помощью битмапдат с "пушистыми" полукругами.
|
Не знаю, правильно ли я понял, так как drawTriangles() для меня нечто новое. Но не является ли такая линия тем же что и прямоугольник, залитый градиентом?
|
является да
|
Дело в том, что "отпечаток" кисти - круглой формы. И если рисовать толстую линию с помощью lineTo(), то оба концы у нее будут скругленными (то что мне и надо - так как в других графических редакторах). Но если рисовать треугольниками толстую линию, то концы будут, какбы, квадратными. :o
|
Цитата:
|
Цитата:
|
Можете привести часть кода? Самому интересно.
|
А мне всегда казалось, что лучше всего с этой задачей справляется BlurFilter, наложенный на четкую линию.
|
А правильно ли отрисуется "смягченный" спрайт, с помощью BlurFilter, в Bitmap? Имею в виду: будет ли растровое изображение созданное из Sprite иметь тоже смягченные края?
|
Будет.
|
Цитата:
|
Цитата:
Я вот не вижу, как с треугольниками и полукругами на концах реализовать нормальный стык двух отрезков. Т.е. - не будут ли размытые края отрезков накладываться друг на друга? |
Цитата:
А если ограничиться лишь "рисованием мягких линий" — производительностью даже на слабой машине... даже на очень слабой машине. А с приходом аппаратного 3D треугольники и вовсе ушли далеко вперед. Цитата:
|
Ммм вроде даже 2 blur фильтра при наложении у меня дают искажения в графике флэша в виде косяков при анимации и черных пятен. Прокатит норм если один блер делать имхо, а если выбор размытия и куча блеров - начнется неправильная прорисовка и тормоза. (
|
Ну да, я про непрерывную линию - два отрезка под некоторым углом, отличным от 180. Если два отрезка рисовать прямоугольниками - они не будут нормально стыковаться. Если высчитывать трапеции, то, хм... Мало того, что много гемора, так еще и стык не совсем качественный будет, так еще и каждый отрезок до конца можно будет нарисовать только после того, как будет проведен следующий отрезок.
Вобще, я просто не могу понять, как можно нормально ломаную линиию разбить на треугольники. Чтобы не флудить лишнего - нарисуй, пожалуйста, на вот этом примере разбивку по треугольникам: [IMG]http://i.***********/i7/b97ef0bedd31b62ad66fb77a625ee107/1-5-1047/60058049/blurLine.jpg[/IMG] Ну, или покажи рабочий пример такой рисовалки. |
Вложений: 1
Здесь смотрим пример подобной реализации.
А вот так разбиваем на треугольники: |
Так стыками-то жертвовать приходится. И в примере и в этой разбивке - получаются "рваные" стыки, не скругленные ни разу.
|
Я же выше все расписал, неужели трудно самому понять, какие 2 треугольника должны находиться на каждом конце линии и какая для этого нужна текстура?
|
Трудно. Честно.
Речь о стыке. Мышку не отпускали, это ОДНА линия. Но на стыке будет угол там, где должно быть мягкое скругление. В примере по ссылке (интересном, спасибо!) это хорошо видно, если провести линию с острым углом (скажем вправо и сразу влево чуть вниз)) Даже артефакты появляются. |
Тю блин. Вы о точках ломаной, а не о концах. Ясно.
Да, в примере они не реализованы. Сделать их можно теми же треугольниками в виде веера вокруг опорной точки (которая снимается с мыши). |
Я все понял про текстуру и трехугольники. Но в результате отрисовки по треугольникам, которые нарисовал ты, получится вот такая линия:
[IMG]http://i.***********/i7/40f7d05c73327a490faedf84caeeb6bf/1-5-1055/917860/CustomBrush.jpg[/IMG] У нее "рваный" или "ломаный" стык, о чем я и говорю. ЗЫ Чего нервничать? |
Выше уже ответил. И это не "нервы", это возмущение на якобы "непонимание простых вещей", которое я ошибочно прочитал в твоем посте ;)
|
| Часовой пояс GMT +4, время: 01:19. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.