PDA

Просмотр полной версии : Копирование битмэпа в произвольно-ориентированный прямоугольник


orcpochta
25.11.2008, 14:24
Опять у меня траблы с пониманием методов класса BitmapData().

Есть прямоугольник mcStamp, для краткости будем считать, что он повернут на 30 градусов и он залип на мышке. На сцене есть мувиклип mcPict с какой-то картинкой. Если щелкнуть мышкой в то время, как mcStamp над mcPict, то должен скопироваться участок картинки, находящийся ровно под mcStamp, из mcPict в mcStamp.
Если mcStamp не повернут на какой-то угол, то все просто, а вот если повернут, то у меня начинаются трудности - никак не могу сообразить что мне делать.

Волгоградец
25.11.2008, 14:31
В чем заключаются трудности? Если рисуешь картинку методом draw(), то в нем второй параметр - [matrix:Matrix] - его нужно использовать если хочешь скопировать картинку с поворотом, смещением, масштабом...
Есть способ проще - тот клип, который тебе надо "срисовать", положить в другой клип и уже его рисовать в битмапу - тогда все изменения этого клипа (первого, который нужно скопировать) сохранятся и не нужно создавать матрицу.

orcpochta
25.11.2008, 14:34
я так и пытаюсь через матрикс это сделать, но не могу получить нужного эффекта

chingachgoog
25.11.2008, 14:41
...должен скопироваться участок картинки, находящийся ровно под mcStamp..Если mcStamp....повернут...


Вот трудность как раз именно в этом: вырезать из битмапы фигуру, которая не является прямоугольником (неповернутым).
Можно решать такую сложную задачу сложно (через threshold, matrix и т.п.). А можно просто - копировать избыточный неповернутый прямоугольник описывающий нашу фигуру (в данном случае повернутый mcStamp) и скрывать излишества маской (маску на самом деле только и поворачивать, а сам мувик-штамп не поворачивать).

orcpochta
25.11.2008, 14:45
Вот трудность как раз именно в этом: вырезать из битмапы фигуру, которая не является прямоугольником (неповернутым).
Можно решать такую сложную задачу сложно (через threshold, matrix и т.п.). А можно просто - копировать избыточный неповернутый прямоугольник описывающий нашу фигуру (в данном случае повернутый mcStamp) и скрывать излишества маской (маску на самом деле только и поворачивать, а сам мувик-штамп не поворачивать).

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

chingachgoog
25.11.2008, 14:51
Тогда мучайтесь :)
По идее, можно обойтись за один раз draw, если правильные параметры подобрать.

orcpochta
25.11.2008, 14:54
Тогда мучайтесь :)
По идее, можно обойтись за один раз draw, если правильные параметры подобрать.

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

локалТуГлобал и глобалТуЛокал мне в помощь..)))

Волгоградец
25.11.2008, 15:07
Вот без матрицы.

orcpochta
25.11.2008, 15:17
вы слишком упростили задачу, этот пример ни о чем не говорит..))

Волгоградец
25.11.2008, 15:44
Не понял... Разве это не решение?

orcpochta
25.11.2008, 16:01
Не понял... Разве это не решение?

скорей всего решение, но не того, чего надо..))

Всем спасибо, я справился..)))

UPD: Придется все-таки брать избыточные прямоугольники и использовать маску, посколько если заниматься поворотами матрицы, то качество копируемого участка битмэпа ощутимо теряется.