Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Программное рисование своей кистью? (http://www.flasher.ru/forum/showthread.php?t=81927)

mushi_mushi 29.06.2006 22:02

Программное рисование своей кистью?
 
Вложений: 1
Добрый вечер.
Есть кисть произвольной формы (на рисунке во вложении изображенна синим).
Необходимо ее програмно передвинуть, чтобы она оставила после себя след (заштрихован на рисунке).

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

Если бы я мог найти координаты краевых точек (обведенны зеленым), то тут и думать нечего.
Только понятия не имею, как их искать.

Цель - рисование на маске, с целью проявления картинки под маской...
Только вот кисть - в идеале, это произвольный movie clip, или shape...

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

Ion 29.06.2006 22:19

Нужно и форму кисти программно описывать

mushi_mushi 29.06.2006 22:28

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

Nirth 29.06.2006 22:30

можно через BitmapData.
нарисовать кисть, загрузить(атачнуть), и потом копировать

mushi_mushi 29.06.2006 22:34

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

MyXus 29.06.2006 22:34

а ведь морочно форму кисти описать..
Я думаю такой вариант: есть пара алгоритмов (чилсенный и еще один), с помощью которых можно найти самую удаленную от центра курсора точку, которая к тому же находится на прямой, перпендикулярной движению курсора и проходящей, опять же, через центр курсора.
Находишь 2 такие точки - справа и слева от оси движения, еще 2 - для конечной позиции курсора и соединяешь их попарно линиями.
Если линия движения курсора скривляется программно - этот алгоритм можно проинтегрировать..
Но ващет, довольно морочно.

MyXus 29.06.2006 22:36

Цитата:

Сообщение от Nirth
можно через BitmapData.
нарисовать кисть, загрузить(атачнуть), и потом копировать

если кисть с прозрачностью, то жестяк... а так - оч удобно.. жаль что не догадался сам )

mushi_mushi 29.06.2006 22:44

Цитата:

Сообщение от MyXus
если кисть с прозрачностью, то жестяк...

С прозрачностью жесть, да?.. Совсем?...
Я вот сам догадался, пока думал, как это сделанно в фотошопе...

А ты можешь сказать, как называются эти алгоритмы нахождения этих точек?.. Или ми сам буду думать.

Nirth 29.06.2006 22:45

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

iNils 29.06.2006 22:47

mcBrush - это мувиклип с кистью
Код:

import flash.display.BitmapData;
import flash.geom.*;
bmpd = new BitmapData (mcBrush._width, mcBrush._height, true, 0x00000000);
bmpCanvas = new BitmapData (Stage.width, Stage.height, true, 0x00000000);
bmpd.draw (mcBrush);
this.createEmptyMovieClip ("mc", 1);
this.createEmptyMovieClip ("mcCanvas", 0);
mc.attachBitmap (bmpd, 0);
mcCanvas.attachBitmap (bmpCanvas, 0);
mcBrush._visible = false;
Mouse.hide ();
mc.startDrag (true);
mc.onMouseMove = function () {
        bmpCanvas.copyPixels (bmpd, new Rectangle (0, 0, 100, 100), new Point (this._x, this._y), bmpd, new Point (0, 0), true);
        updateAfterEvent ();
};



Часовой пояс GMT +4, время: 02:31.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.