Как я могу добиться гладкой нарисованной кривой для приложения на белой доске? - PullRequest
0 голосов
/ 23 февраля 2010

Я создаю простое приложение для белой доски в ActionScript 3. Большинство приложений для белой доски или рисования в ActionScript, как правило, используют интервал, таймер, событие mouseMove или событие enterFrame для отслеживания положения мыши и рисования линий или кистей между ними. отслеживаемые точки.

То, чего я пытаюсь добиться, - это хорошая плавная нарисованная линия, которую такая программа, как Photoshop, может визуализировать, рисуя с помощью кисти. В Photoshop, независимо от того, как быстро вы перемещаете мышь по холсту, нарисованные линии всегда заканчиваются красивым гладким изогнутым краем. В моем приложении, используя любой из методов, упомянутых ранее, всегда есть задержка между вызовами функций, которые отображают кисть на сцене. Таким образом, использование любого из этих методов может привести к получению резкой угловой линии при очень быстром круговом перемещении мыши.

Это не удивительно для меня, я просто понятия не имею, как мне добиться более плавной линии, как кисть Photoshop. Имейте в виду, что кисти для моего приложения в основном основаны на фигурах и не используют или не могут использовать API рисования для рисования линий продолжения. Другими словами, graphics.curveTo () не вариант. Я также рендеринг спрайтов или фигур, сгенерированных кистями, в экземпляр BitmapData.

Ответы [ 4 ]

0 голосов
/ 24 февраля 2010

Мое решение оказалось комбинацией двух техник. В итоге я показал предварительный просмотр пути при использовании / рисовании кисти. Когда это происходит, я собираю все точки между интервалами. Затем, когда пользователь отпускает кнопку мыши, я рисую более точный изогнутый мазок кисти, используя квадратную кривую Безье между всеми собранными точками.

0 голосов
/ 23 февраля 2010

Я думаю, что единственный способ получить лучший результат - это использовать более высокую частоту кадров для вашего flash-фильма. Таким образом, в секунду выполняется больше проверок, что должно сделать линию более гладкой.

0 голосов
/ 23 февраля 2010

http://www.paultondeur.com/2008/03/09/drawing-a-cubic-bezier-curve-using-actionscript-3/

Посмотрите на это :) у него есть несколько образцов

0 голосов
/ 23 февраля 2010

Итак, как вы рисуете свои линии, если не используете графический API? (вы можете захотеть взглянуть на функцию lineBitmapStyle графического API).

Что бы я ни сделал, независимо от метода рисования, это оценить траекторию кисти между двумя имеющимися точками, возможно, используя предыдущие точки, чтобы определить, каким образом (и сколько) изогнуть путь. Вы читали о кривых Безье? (http://en.wikipedia.org/wiki/B%C3%A9zier_curve)

...