comment convertir la couleur rvb en int en java


Paint.setColor attend un entier. Mais ce que j'ai est un objet Color. Je ne vois pas un color.getIntValue() en Java? Alors, comment dois-je faire? Ce que je veux, c'est quelque chose comme

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

Correction: android.graphics.Color; je pensais avoir android comme l'un des balises serait suffisant. Mais apparemment pas.

Author: Cote Mounyo, 2013-08-02

8 answers

Tout d'abord, Android.graphique.Color est une classe composée uniquement de méthodes statiques. Comment et pourquoi avez-vous créé un nouvel Android.graphique.La couleur de l'objet? (Ceci est complètement inutile et l'objet lui-même ne stocke aucune donnée)

Mais de toute façon... Je vais supposer que vous utilisez un objet qui stocke réellement des données...

Un entier est composé de 4 octets (en java). En regardant la fonction getRGB () de l'objet couleur java standard, nous pouvons voir que java mappe chaque couleur sur un octet du entier dans l'ordre ARGB (Alpha-Rouge-Vert-Bleu). Nous pouvons répliquer ce comportement avec une méthode personnalisée comme suit:

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.
}

Cela suppose que vous pouvez en quelque sorte récupérer les composants de couleur rouge, vert et bleu individuels et que toutes les valeurs que vous avez transmises pour les couleurs sont 0-255.

Si vos valeurs RVB sont sous la forme d'un pourcentage flottant entre 0 et 1, considérez la méthode suivante:

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;
}

Comme d'autres l'ont dit, si vous utilisez un objet java standard, utilisez simplement getRGB ();

Si vous décidez d'utiliser correctement la classe de couleur Android, vous pouvez également faire:

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

Ou

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

Comme d'autres l'ont dit... (La deuxième fonction suppose 100% alpha)

Les deux méthodes font essentiellement la même chose que la première méthode créée ci-dessus.

 34
Author: initramfs, 2015-09-17 03:23:17

Si vous développez pour Android, la méthode de couleur pour cela est rvb (int, int, int)

Donc vous feriez quelque chose comme

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

Pour récupérer les valeurs de couleur individuelles, vous pouvez utiliser les méthodes suivantes:

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

Reportez-vous à ce document pour plus d'info

 17
Author: superdiazepam, 2014-08-30 20:18:27

Color possède une méthode getRGB () qui renvoie la couleur sous la forme d'un int.

 6
Author: chrylis, 2013-08-02 17:03:39

Vous souhaitez utiliser intvalue = Color.parseColor("#" + colorobject);

 4
Author: JoppeD, 2014-07-22 11:25:17

Int color = (A & 0xff)

 3
Author: Amol Jindal, 2018-05-04 07:28:07

Vous pouvez déclarer une valeur en couleur.xml, et donc vous pouvez obtenir une valeur entière en appelant le code ci-dessous.

context.getColor(int resId);
 1
Author: TangQisen, 2014-03-18 12:31:43

Utilisez getRGB () , cela aide (pas de programmes compliqués)

Renvoie un tableau de pixels entiers dans le modèle de couleur RVB par défaut (TYPE_INT_ARGB) et l'espace colorimétrique sRGB par défaut, à partir d'une les données de l'image.

 -1
Author: meow, 2014-05-07 23:16:28

Essayez celui-ci:

Color color = new Color (10,10,10)


myPaint.setColor(color.getRGB());
 -1
Author: lexpfb, 2015-06-16 17:24:02