Вопрос по android, shader, java, graphics, paint – изменение интенсивности освещения / затемнения на растровых изображениях с помощью PorterDuffXfermode в классе Android Paint

3

Хорошо, мой оригинальный вопрос изменился. Как мне изменить интенсивность того, как это происходит?

    DayToNight.setXfermode(new PorterDuffXfermode(Mode.DST_IN));

в мире моей мечты это сработало бы так

    DayToNight.setXfermode(new PorterDuffXfermode(Mode.DST_IN(10)));

10 - это уровень интенсивности.

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

У меня есть уравнения, таймеры и все, что выяснилось, только не то, как на самом деле применить его, чтобы изменить цвет / яркость. Может быть, запись изображений - это то, что я ищу? Я просто хочу изменить легкость LOL.

Я чувствую, что использование paint.setShader может быть решением, но информация в этой области довольно ограничена по сравнению с тем, что я смог найти. Любая помощь будет оценена.

редактировать: чтобы быть кристально чистым, я ищу способ осветлить / затемнить растровые изображения, как я рисую их на холсте

возможно что-то здесь Paint.setXfermode (новый PorterDuffXfermode (Mode.LIGHTEN)); даже если так, как бы я изменил значение освещения / затемнения WIllJBD
как вы регулируете интенсивность темноты MetaSnarf
Удивительно, как я искал часы и ничего не придумал, и теперь я начинаю разбираться в этом ... Слава Богу, хорошим людям, которые публикуют примеры того, что делает то, чтоvollnixx.wordpress.com/2012/06/06/… WIllJBD

Ваш Ответ

2   ответа
0

Эй, я использовал своего рода хитрость, чтобы удалить черную линию. В моей кнопке стирания я установил белый цвет вместо использования XferMode. Он работает и выглядит хорошо.

if(erase){
paintColor = Color.parseColor(newColor);
drawPaint.setColor(paintColor);
}
9

Эти два подхода могут решить вашу проблему:

  1. Put a dark rectangle behind your bitmap and set the Bitmap's opacity.

  2. Use ColorFilter on your Paint when you draw the bitmap. To darken your bitmap use a semi-transparent black color

краска = новая краска (); Фильтр ColorFilter = новый LightingColorFilter (0xFF222222, 0x00000000); paint.setColorFilter (фильтр); WIllJBD
Не могли бы вы дать мне строку кода о том, как я это сделаю? WIllJBD
Метод, упомянутый WIllJBD, великолепен, отлично работает, вы даже можете настроить уровни темноты.
если ваше растровое изображение имеет несколько прозрачных областей, использование простого прямоугольника не сработает, потому что вы увидите его под ним. вместо этого вы можете использовать оба подхода и сначала нарисовать растровое изображение с помощью LightingColorFilter (0xFF000000, 0x00000000), а затем, обычно, то же растровое изображение
@ Сохам, как настроить каналы темноты?

Похожие вопросы