Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 08.04.2011, 08:19
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 1  
Ответить с цитированием
goodguy
Banned

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
По умолчанию Как можно скопировать пиксели из не прямоугольной области?

Собственно, сабж.
Нужно сделать что-то типа, lasso / polygonal lasso в фотошопе.
Допустим, загружаю изображение, обвожу мышкой какой-нибудь кусок, и хочу, чтобы в новую битмапку скопировалась только выделенная область, а все остальное стало альфа каналом.

Кто-нибудь знает как реализовать? =)

Старый 08.04.2011, 08:26
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 2  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Наверное копировать придется всю область (прямоугольником) по габаритам выделенной области. А потом шаманить с совмещением двух битмап — прямоугольной и той, в которую отрисована форма выделения.
__________________
hauts.ru

Старый 08.04.2011, 08:31
MAPUTO вне форума Посмотреть профиль Отправить личное сообщение для MAPUTO Найти все сообщения от MAPUTO
  № 3  
Ответить с цитированием
MAPUTO
 
Аватар для MAPUTO

Регистрация: Mar 2011
Сообщений: 38
РисуеТСЯ фигура мышкой, добавляется в пустой объект BitmapData с прозрачными пикселами - такого же размера как и исходный. Ну а потом copyChannel().

Точнее можно сделать прямоугольник под размер картинки, скажем, зеленого цвета. Плюсануть к нему объект произвольной формы (красного цвета) и конвертировать их в растр. Ну а потом copyChannel() - Красный на Альфа.


Последний раз редактировалось iNils; 12.08.2011 в 17:24.
Старый 08.04.2011, 08:54
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 4  
Ответить с цитированием
goodguy
Banned

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
MAPUTO, а есть пример? Что-то не могу сообразить

Старый 08.04.2011, 09:59
MAPUTO вне форума Посмотреть профиль Отправить личное сообщение для MAPUTO Найти все сообщения от MAPUTO
  № 5  
Ответить с цитированием
MAPUTO
 
Аватар для MAPUTO

Регистрация: Mar 2011
Сообщений: 38
Типа того. Возможны ошибки - код не компилировал.

Код AS3:
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);
 
// промежуточные объекты можно удалить

Старый 08.04.2011, 10:20
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 6  
Ответить с цитированием
goodguy
Banned

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Смысл понятен, спасибо =)

Старый 12.08.2011, 17:17
PsixokoT вне форума Посмотреть профиль Отправить личное сообщение для PsixokoT Найти все сообщения от PsixokoT
  № 7  
Ответить с цитированием
PsixokoT

Регистрация: May 2008
Сообщений: 63
у copyPixels есть параметр alphaBitmapData

Старый 12.08.2011, 18:20
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 8  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Ребят, извините, но во-первых, вы копируете цвета всех пикселей в прямоугольнике, в том числе невидимых. И это бы ладно, но вы еще для всех видимых устанавливаете альфу 100%. А если они были полупрозрачные?
__________________
Reality.getBounds(this);

Старый 12.08.2011, 20:06
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 9  
Ответить с цитированием
goodguy
Banned

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Тема баян. Ну раз уж на то пошло, перечитайте вопрос. Смысл был в реализации инструмента наподобие лассо в фотошопе. Не понимаю, каким боком сюда вообще можно отнести alphaBitmapData.
PsixokoT явно в вопрос не вник

Старый 12.08.2011, 20:41
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 10  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Я бы предложил поиграться (самому сейчас некогда, увы) с Graphics и bitmapFill – Лассо рисует фигуру, заливаемую битмапдатой исходного изображения.
__________________
Reality.getBounds(this);

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:45.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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