web-dev-qa-db-ja.com

プログラムで色をより透明にする

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

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

27
TrolliOlli

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

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

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

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

10
spartygw

サポートライブラリを使用している場合は、

ColorUtils.setAlphaComponent(int color, int alpha)

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

int res = (color & 0x00ffffff) | (alpha << 24);

69
Anton Ryabyh

こんにちは。

Android.support.v4.graphics.ColorUtils#setAlphaComponent

注:ここでのアルファは0から255であり、%ベースではありません。

そこには、契約や光度計算などの他のutilメソッドもあります。

よろしく

7
Joao Gavazzi

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

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;
4
Chintan Rathod

上の答えから、これを行うメソッドを作成しました:

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の任意の値に設定します。

2
user1