Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   конвертация RGB (http://www.flasher.ru/forum/showthread.php?t=142602)

Dezar 25.07.2010 23:47

конвертация RGB
 
Здравствуйте.
нужна помощь.не смог нигде найти на форуме.
как конвертировать значение цвета полученного например через getPixel в виде 0x076678
в каналы?
то есть каналы красный, голубой и зеленый(значения от -255 до 255).

либо может я занимаюсь ерундой и вы посоветуйте что-то более дельное.
я узнаю параметры цвета для того чтобы далее этим цветом рисовать + мне этим цветом надо залить объект(кисточку).для заливки использую ColorTransform

Хемуль 25.07.2010 23:57

Типа так?
Код AS3:

      function hexToRGB(hex:uint):Object
      {
            var rgbObj:Object = {
                  red: ((hex & 0xFF0000) >> 16),
                  green: ((hex & 0x00FF00) >> 8),
                  blue: ((hex & 0x0000FF))
            };
            return rgbObj;
      }

Цитата:

Сообщение от Dezar (Сообщение 924916)
то есть каналы красный, голубой и зеленый(значения от -255 до 255).

Вообще, в http://www.adobe.com/livedocs/flash/...itmapData.html написано:
Цитата:

Each 32-bit integer is a combination of four 8-bit channel values (from 0 to 255) that describe the alpha transparency and the red, green, and blue (ARGB) values of the pixel.
Или у вас какая-то своя шкала для цветовых каналов?

Dezar 26.07.2010 00:24

про - 255 я взял из

Код:

redOffset:Number (default = 0) — The offset value for the red color channel, in the range from -255 to 255.
 
        greenOffset:Number (default = 0) — The offset value for the green color channel, in the range from -255 to 255.
 
        blueOffset:Number (default = 0) — The offset for the blue color channel value, in the range from -255 to 255.
 
        alphaOffset:Number (default = 0) — The offset for alpha transparency channel value, in the range from -255 to 255.

в любом случае.
код что вы предоставили я малость не понял

hex:uint - тут мы передаем код RGB?

этот момент
Код AS3:

red: ((hex & 0xFF0000) >> 16),
                  green: ((hex & 0x00FF00) >> 8),
                  blue: ((hex & 0x0000FF))

нельзя отобразить как-то в стиле
Код AS3:

var red:uint = и тп

?

udaaff 26.07.2010 00:36

А как вы из функции вернете сразу три значения? Или массив или какой-то объект всё-равно придется создавать.

Dezar 26.07.2010 00:43

я как раз о массиве говорю.

КорДум 26.07.2010 00:48

Так и переделайте, вместо Object поставьте Array:
Код AS3:

      function hexToRGB(hex:uint):Array {
            var arr:Array = [((hex & 0xFF0000) >> 16),
                            ((hex & 0x00FF00) >> 8),
                            ((hex & 0x0000FF)) ]
            return arr;
      }


Dezar 26.07.2010 00:55

я малость другое имел ввиду.но в любом случае я получил ответ на главный вопрос.спасибо.

Добавлено через 1 час 26 минут
кому будет интересно я оптимизировал все вот так

Код AS3:

 
 
var red:uint = (random_color & 0xFF0000) >> 16;
var green:uint = (random_color & 0x00FF00) >> 8;
var blue:uint = (random_color & 0x0000FF);
dd.transform.colorTransform = new ColorTransform (1,1,1,1,red,green,blue);

где random_color - это grb формат (0х000000)
заливать следует черный цвет.
так как на остальных заливка идет не та, которую выбрали.


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

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