web-dev-qa-db-ja.com

javaでRGBカラーをintに変換する方法

_Paint.setColor_には整数が必要です。しかし、私が持っているのはColorオブジェクトです。 Javaにcolor.getIntValue()が表示されませんか?それでどうすればいいですか?私が欲しいのは

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

修正:_Android.graphics.Color;_タグの1つとしてAndroidがあれば十分だと思いました。しかし、明らかにそうではありません。

13
Cote Mounyo

まず、Android.graphics.Colorは静的メソッドのみで構成されるクラスです。新しいAndroid.graphics.Colorオブジェクトを作成した方法と理由は何ですか? (これはまったく役に立たず、オブジェクト自体はデータを保存しません)

とにかく...実際にデータを保存するオブジェクトを使用していると仮定します...

整数は4バイトで構成されます(Javaで)。標準のJava Colorオブジェクトから関数getRGB()を見ると、次のように見えます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.

他の人が述べているように...(2番目の関数は100%アルファを想定)

両方のメソッドは、基本的に上記で作成した最初のメソッドと同じことを行います。

40
initramfs

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) 

詳細については このドキュメント を参照してください

19
superdiazepam

Colorには、色をintとして返す getRGB() メソッドがあります。

7
chrylis

int color =(A&0xff)<< 24 | (R&0xff)<< 16 | (G&0xff)<< 8 | (B&0xff);

4
Amol Jindal

Color.xmlで値を宣言できます。したがって、以下のコードを呼び出すことで整数値を取得できます。

context.getColor(int resId);
1
TangQisen