2012-04-21 6 views
3

Мне нужна небольшая помощь в том, чего я хочу достичь. Я использую BitmapShader в своем приложении для рисования на холсте. Я настраиваю пользовательский файл png как шейдер для моей переменной paint, и я хочу изменить цвет шейдера.Android BitmapShader изменить цвет

Вот пример кода, который я использую:

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.particle_point); 
    BitmapShader shader = new BitmapShader(bitmap, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT); 
    mPaint.setShader(shader); 
    ColorFilter filter = new LightingColorFilter(0xFFFFFFFF , 0x000000FF); 
    mPaint.setColorFilter(filter); 

Я считаю, что я могу изменить его цвет с помощью:

ColorFilter filter = new LightingColorFilter(0xFFFFFFFF , 0x000000FF);

, но мне нужно, чтобы быть в состоянии измените его цвет, используя пользовательский набор цветов, который возвращает код цвета, подобный этому: -234423123.

Так что я могу использовать этот цветовой код и установить его как цвет моей переменной.

Заранее благодарен!

+0

Какой цвет вы используете? – Moss

+0

Я использую этот подборщик цветов: http://code.google.com/p/color-picker-view/ –

ответ

3

Цвет, который вы преобразовываете в гексагон: FFFFFFFFF206FCAD. Таким образом, вам нужно избавиться от 8 ведущих Fs:

int color = -234423123;//0xFFFFFFFFF206FCAD 
int myColor = 0x00000000FFFFFFFF & color; 

myColor должно быть в порядке.

0

Чтобы получить шестигранную строку:

"#"+Integer.toHexString(n)); 

Но ваш выбор цвета просто возвращает значение INT Цвет, который должен быть достаточно, чтобы работать!

ColorFilter filter = new LightingColorFilter(0xFFFFFFFF , 0x000000FF); 

Просто измените значение, которое определяет цвет на междунар ваш Colorpicker возвращается ... (без 0x перед ним Ofcourse) ...

Если я не ошибся, это должно работать только как хорошо!

+0

мой выбор цвета возвращает значения, которые выглядят как -32314112 и что-то в этом роде. Если я установил это значение как первое в моем «ColorFIlter», он будет оставаться черным независимо от того, какой цвет я выбираю. –

+0

О, хорошо, похоже, что это не работает с отрицательными значениями, решение Мосса выглядит в этом случае! – Ferdau

1

Просто добавьте немного более подробный ответ Мосса. Как он предположить, вы можете использовать myColor как значение, которое вы хотите, и установить правильное значение для вашего шейдера вы должны добавить к вашему myColorLightingColorFilter так:

ColorFilter filter = new LightingColorFilter(myColor , myColor); 

И он должен работать.

+0

Большое спасибо за этот ответ. Я просто пытался понять это. –

+0

Хорошее дополнение +1 – Moss

Смежные вопросы