Как преобразовать цвет rgb в int в java

Paint.setColor ожидает целое число. Но у меня есть объект Color . Я не вижу color.getIntValue() в Java? Итак, как мне это сделать? Я хочу что-то вроде

 public Something myMethod(Color rgb){ myPaint.setColor(rgb.getIntValue()); ... } 

Коррекция: android.graphics.Color; Я думал, что для android одного из тегов. Но, видимо, нет.

Solutions Collecting From Web of "Как преобразовать цвет rgb в int в java"

Прежде всего, android.graphics.Color – это класс, состоящий только из статических методов. Как и почему вы создали новый объект android.graphics.Color? (Это совершенно бесполезно, и сам объект не хранит никаких данных)

Но в любом случае … Я собираюсь предположить, что вы используете какой-то объект, который фактически хранит данные …

Целое число состоит из 4 байтов (в java). Глядя на функцию getRGB () из стандартного java-объекта Color, мы можем видеть java-карты каждого цвета в один байт целого числа в формате ARGB (Alpha-Red-Green-Blue). Мы можем воспроизвести это поведение с помощью специального метода следующим образом:

 public int getIntFromColor(int Red, int Green, int Blue){ Red = (Red << 16) & 0x00FF0000; //Shift red 16-bits and mask out other stuff Green = (Green << 8) & 0x0000FF00; //Shift Green 8-bits and mask out other stuff Blue = Blue & 0x000000FF; //Mask out anything not blue. return 0xFF000000 | Red | Green | Blue; //0xFF000000 for 100% Alpha. Bitwise OR everything together. } 

Это предполагает, что вы можете каким-то образом получить отдельные компоненты красного, зеленого и синего цвета и что все значения, которые вы передали для цветов, равны 0-255.

Если ваши значения RGB представлены в виде процентного значения с плавающей запятой между 0 и 1, рассмотрим следующий метод:

 public int getIntFromColor(float Red, float Green, float Blue){ int R = Math.round(255 * Red); int G = Math.round(255 * Green); int B = Math.round(255 * Blue); R = (R << 16) & 0x00FF0000; G = (G << 8) & 0x0000FF00; B = B & 0x000000FF; return 0xFF000000 | R | G | B; } 

Как утверждали другие, если вы используете стандартный Java-объект, просто используйте getRGB ();

Если вы решили правильно использовать класс цвета Android, вы также можете:

 int RGB = android.graphics.Color.argb(255, Red, Green, Blue); //Where Red, Green, Blue are the RGB components. The number 255 is for 100% Alpha 

или

 int RGB = android.graphics.Color.rgb(Red, Green, Blue); //Where Red, Green, Blue are the RGB components. 

Как утверждали другие … (Вторая функция предполагает 100% альфа)

Оба метода в основном делают то же, что и первый метод, созданный выше.

Если вы разрабатываете для Android, метод Color для этого – rgb (int, int, int)

Таким образом, вы сделали бы что-то вроде

 myPaint.setColor(Color.rgb(int, int, int)); 

Для получения отдельных значений цвета вы можете использовать методы для этого:

 Color.red(int color) Color.blue(int color) Color.green(int color) 

Подробнее см. В этом документе.

Color имеет метод getRGB (), который возвращает цвет как int .

Вы хотите использовать intvalue = Color.parseColor("#" + colorobject);

Вы можете объявить значение в color.xml, и, таким образом, вы можете получить целочисленное значение, вызвав код ниже.

 context.getColor(int resId); 

Используйте getRGB () , он помогает (без сложных программ)

Возвращает массив целых пикселей в цветной модели RGB по умолчанию (TYPE_INT_ARGB) и цветовом пространстве sRGB по умолчанию из части данных изображения.

Попробуй это:

 Color color = new Color (10,10,10) myPaint.setColor(color.getRGB());