![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Banned
Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Собственно, сабж.
Нужно сделать что-то типа, lasso / polygonal lasso в фотошопе. Допустим, загружаю изображение, обвожу мышкой какой-нибудь кусок, и хочу, чтобы в новую битмапку скопировалась только выделенная область, а все остальное стало альфа каналом. Кто-нибудь знает как реализовать? =) |
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
Наверное копировать придется всю область (прямоугольником) по габаритам выделенной области. А потом шаманить с совмещением двух битмап — прямоугольной и той, в которую отрисована форма выделения.
__________________
hauts.ru |
|
|||||
|
Регистрация: Mar 2011
Сообщений: 38
|
РисуеТСЯ фигура мышкой, добавляется в пустой объект BitmapData с прозрачными пикселами - такого же размера как и исходный. Ну а потом copyChannel().
Точнее можно сделать прямоугольник под размер картинки, скажем, зеленого цвета. Плюсануть к нему объект произвольной формы (красного цвета) и конвертировать их в растр. Ну а потом copyChannel() - Красный на Альфа. Последний раз редактировалось iNils; 12.08.2011 в 17:24. |
|
|||||
|
Banned
Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
MAPUTO, а есть пример? Что-то не могу сообразить
|
|
|||||
|
Регистрация: Mar 2011
Сообщений: 38
|
Типа того. Возможны ошибки - код не компилировал.
myBMP; //объект BitmapData var someShape:Shape; //Draw shape var n_x = someShape.x - myBMP.x - someShape.width/2; //координаты верхнего левого угла someShape var n_y = someShape.y - myBMP.y - someShape.height/2; // относительно myBMP var maskBMP:BitmapData = new BitmapData(someShape.width, someShape.height, false, 0xFF00FF00); // Цвет выбирается произвольно. Можно использовать и альфа-канал maskBMP.draw(someShape); //объект someShape должен быть, к примеру, красного цвета 0xFFFF0000 var newBMP:BitmapData = new BitmapData(someShape.width, someShape.height, false, 0xFFFFFFFF); // Объект-приемник //копируем пиксели из области над которой лежит someShape var rect:Rectangle = new Rectangle(0, 0, someShape.width, someShape.height); var pt:Point = new Point(n_x, n_y); newBMP.copyPixels(myBMP, rect, pt); newBMP.copyChanel(maskBMP, rect,[0,0],BitmapDataChannel.RED,BitmapDataChannel.ALPHA); // промежуточные объекты можно удалить |
|
|||||
|
Banned
Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Смысл понятен, спасибо =)
|
|
|||||
|
Регистрация: May 2008
Сообщений: 63
|
у copyPixels есть параметр alphaBitmapData
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Ребят, извините, но во-первых, вы копируете цвета всех пикселей в прямоугольнике, в том числе невидимых. И это бы ладно, но вы еще для всех видимых устанавливаете альфу 100%. А если они были полупрозрачные?
__________________
Reality.getBounds(this); |
|
|||||
|
Banned
Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Тема баян. Ну раз уж на то пошло, перечитайте вопрос. Смысл был в реализации инструмента наподобие лассо в фотошопе. Не понимаю, каким боком сюда вообще можно отнести alphaBitmapData.
PsixokoT явно в вопрос не вник |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Я бы предложил поиграться (самому сейчас некогда, увы) с Graphics и bitmapFill – Лассо рисует фигуру, заливаемую битмапдатой исходного изображения.
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:45. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|