|
|
|
|||||
Регистрация: Dec 2011
Сообщений: 15
|
Некорректная работа copyChannel()
Имеется код
// берем картинку из библиотеки var bg:myImage = new myImage(800, 600); // пытаемся изменить альфу путем присвоения ей значения красного канала bg.copyChannel(bg, new Rectangle(0,0,800, 600), new Point (0,0), BitmapDataChannel.RED, BitmapDataChannel.ALPHA); var myPicture:Bitmap = new Bitmap(bg); addChild(myPicture); Можно написать так: var bg:myImage = new myImage(800, 600); //создаем новую битмапдату var temp:BitmapData = new BitmapData(800, 600); // копируем все каналы из нашей картинки в новую битмапдату temp.copyChannel(bg, new Rectangle(0,0,800, 600), new Point (0,0), BitmapDataChannel.BLUE, BitmapDataChannel.BLUE) temp.copyChannel(bg, new Rectangle(0,0,800, 600), new Point (0,0), BitmapDataChannel.GREEN, BitmapDataChannel.GREEN); temp.copyChannel(bg, new Rectangle(0,0,800, 600), new Point (0,0), BitmapDataChannel.RED, BitmapDataChannel.RED); // и уже теперь меняем альфу temp.copyChannel(bg, new Rectangle(0,0,800, 600), new Point (0,0), BitmapDataChannel.RED, BitmapDataChannel.ALPHA); var myPicture:Bitmap = new Bitmap(temp); addChild(myPicture); И собственно вопросы, почему так получается, и есть ли более элегантное решение? |
|
|||||
Lorem ipsum
|
__________________
Поймай яблоко 2! |
|
|||||
Регистрация: Dec 2011
Сообщений: 15
|
trace((temp.getPixel32(100, 100)).toString(16)); // d3d39c87 (канал альфа соответствует значению красного канала = d3) trace((temp.getPixel32(100, 150)).toString(16));//dad9a09b (значение альфа канала больше на единицу) то выдаст Последний раз редактировалось Gasoline; 11.03.2017 в 22:50. |
|
|||||
Регистрация: Dec 2014
Сообщений: 312
|
Происходит потеря данных
Например третья снизу строка в твоем логе. Было значение 12121212 Умножаем каналы на альфу, получим 12010101 Разумножаем обратно, получим 120e0e0e http://help.adobe.com/ru_RU/FlashPla...l#getPixel32() Цитата:
|
|
|||||
Регистрация: Dec 2011
Сообщений: 15
|
Цитата:
А можно к изображению прибавить альфа канал (установить значение transparent как true ), а то мне моё решение кажется громоздким. |
|
|||||
Lorem ipsum
|
Можно три первых copyChannel() заменить на один copyPixels().
__________________
Поймай яблоко 2! |
Часовой пояс GMT +4, время: 20:58. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|