Кисти фотошоп AS3 - PullRequest
       41

Кисти фотошоп AS3

0 голосов
/ 01 сентября 2010

Я ищу способ создания фотошопа, подобного инструменту рисования в ActionScript 3. Особенно я хочу создать что-то вроде кистей в фотошопе.Так что вы можете использовать разные PNG в качестве кисти.

Я пробовал сохранить кисть в фотошопе как прозрачный png, импортировать ее в мой проект AS3 и с помощью события перемещения мыши рисовать png при каждом перемещении.мышь в объект растровых данных.Но это не похоже на фотошоп.Вот пример, сначала рисунок фотошопа, затем рисунок as3:

alt text

alt text

В фотошопе это выглядит очень гладко, но в as3 у вас естьчто уродливые углы и цветовые сдвиги.Кто-нибудь знает решение?

thx, tux

Ответы [ 3 ]

3 голосов
/ 14 ноября 2012

Ответ заключается в том, что Flash рисует bitmapData с предварительно умноженной альфа-прозрачностью. Flash в основном сохраняет память, округляя почти прозрачные пиксели до другого значения. Это незаметно для человеческого глаза, если только вы не укладываете изображения друг на друга снова и снова. Это приводит к ошибкам округления цвета, которые выглядят почти как обгоревший край кисти.

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

Вместо этого нарисуйте мазок кисти в прозрачном растровом изображении и подкрасьте этот новый слой выбранным цветом, используя метод colorTransform. Когда вы наведите курсор мыши, нарисуйте этот прозрачный слой на холсте. (Не забудьте удалить этот дополнительный слой, когда вы его не используете!)

2 голосов
/ 01 сентября 2010

Это потому, что Photshop "проходит" расстояние между координатами мыши и рисует это тоже. Таким образом, даже если вы перемещаете мышь очень быстро между двумя точками, вы получите четкую линию.

Вы рисуете только один раз за обновление мыши, поэтому, если мышь движется очень быстро, вы получите пятна вместо линий.

Вы можете решить эту проблему, отслеживая положение последнего обновления мыши, и если в дополнительных шагах он находится слишком далеко между краской.

0 голосов
/ 01 сентября 2010

Чтобы быть более конкретным: вы должны создавать временное растровое изображение каждый раз, когда вызывается mouseDown.При этом кисти будут нарисованы черно-белыми - это даст более плавные результаты, например, когда вы сделаете нарисованную кисть не полной в альфа-формате.Кроме того - здесь вам придется использовать технику «ходьбы», как говорит grapefrukt.

Наконец, когда событие mouseUp запущено, вы должны перекрасить растровое изображение (для цвета кисти), возможно, добавив несколько фильтровесли хотите и нарисуйте его на основном растровом изображении.

...