37

バーの色を分割するために色の静的配列を使用する単純な棒グラフ アプリケーションに取り組んでいます。バーを通常どおりに描画するか、わずかに透明にする機能が欲しいです。

色の整数をプログラムで調整して、わずかに透明にする方法はありますか? または、各色の透明バージョンを静的に定義し、透明が必要なときはいつでもこれらのバージョンを使用するように切り替える必要がありますか?

4

6 に答える 6

126

サポート ライブラリを使用している場合は、次を使用できます。

ColorUtils.setAlphaComponent(int color, int alpha);

サポート ライブラリを使用していない場合、そのソース コードから取得した 1 行のソリューションは次のとおりです。

int res = (color & 0x00ffffff) | (alpha << 24);
于 2015-06-20T17:53:19.403 に答える
15

確かに...色を見て、関数があります:

static int   argb(int alpha, int red, int green, int blue)

アルファ、赤、緑、青のコンポーネントから color-int を返します。

したがって、RGB 値は静的である可能性があり、アルファ値を上げて新しい透明バージョンの色を取得するだけです。

于 2013-06-21T14:25:21.327 に答える
4

次のコードを試してください

int color = (int)Long.parseLong(your_color, 16);
int r = (color >> 16) & 0xFF;
int g = (color >> 8) & 0xFF;
int b = (color >> 0) & 0xFF;

カラーコードにアルファがある場合

int alpha= (color >> 24) & 0xFF;
于 2013-06-21T14:44:39.600 に答える
3

一番上の答えから、これを行う方法を作成しました:

private Android.Graphics.Color AddTransparencyToColour(Android.Graphics.Color color, int transparancy)
{
    return Android.Graphics.Color.Argb(transparancy, color.R, color.G, color.B);
}

これは、次のような拡張メソッドに変更できることにも注意してください。

public static ColorExtensions
{
    public static Android.Graphics.Color AddTransparency(this Android.Graphics.Color color, int transparancy)
    {
        return Android.Graphics.Color.Argb(transparancy, color.R, color.G, color.B);
    }
}

アルファ値に関しては、MSDN Color.FromArgbから:

備考

不透明な色を作成するには、アルファを 255 に設定します。半透明の色を作成するには、アルファを 1 ~ 254 の任意の値に設定します。

于 2015-11-05T14:41:34.087 に答える