Программно сделать цвет более прозрачным

Я работаю над простым графическим приложением, которое использует статический массив цветов для выделения цветов бара. Я хотел бы, чтобы функциональность либо рисовала полосы обычно, либо слегка прозрачна.

Есть ли способ программно настроить целое число цвета, чтобы оно было слегка прозрачным? Или мне придется статически определять прозрачную версию каждого цвета, а затем переключиться на использование этих версий всякий раз, когда мне нужна прозрачность?

Ответ 1

Конечно... Посмотрите на цвет и там функция:

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

Возвращает цвет-int из альфа, красного, зеленого, синего компонентов.

Таким образом, ваши значения RGB могут быть статическими, и вы просто набрасываете альфа-значение, чтобы получить новую прозрачную версию цвета.

Ответ 2

Если вы используете библиотеку поддержки, вы можете использовать

ColorUtils.setAlphaComponent(int color, int alpha).

Если вы не используете библиотеку поддержки, однострочное решение с использованием исходного кода:

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

Ответ 3

Привет, вы можете использовать:

android.support.v4.graphics.ColorUtils # setAlphaComponent

note: альфа здесь от 0 до 255, а не%.

Существуют также другие методы использования таких расчетов контрактов и светимости.

Привет

Ответ 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;

Ответ 5

Из верхнего ответа я создал метод для этого:

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.