19

Paint.setColor整数を期待しています。しかし、私が持っているのはColorオブジェクトです。color.getIntValue()Java でa が表示されませんか? では、どうすればいいですか?私が欲しいのは次のようなものです

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

訂正:タグの 1 つとしてあれば十分android.graphics.Color;だと思いました。androidしかし、どうやらそうではありません。

4

9 に答える 9

50

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

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

整数は 4 バイトで構成されます (Java の場合)。標準の Java Color オブジェクトの関数 getRGB() を見ると、Java が各色を ARGB (アルファ - 赤 - 緑 - 青) の順序で整数の 1 バイトにマップしていることがわかります。次のように、カスタム メソッドを使用してこの動作を再現できます。

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 の間の float パーセンテージの形式である場合は、次の方法を検討してください。

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%のアルファを想定しています)

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

于 2013-08-03T20:49:44.327 に答える
26

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) 

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

于 2013-08-02T17:14:41.130 に答える
1

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

context.getColor(int resId);
于 2014-03-18T12:31:43.100 に答える
-2

getRGB()を使用すると役立ちます(複雑なプログラムはありません)

画像データの一部から、デフォルトの RGB カラー モデル (TYPE_INT_ARGB) およびデフォルトの sRGB カラー スペースの整数ピクセルの配列を返します。

于 2014-05-07T22:56:16.753 に答える