verander de intensiteit van lichter/donkerder op bitmaps met PorterDuffXfermode in de klasse Android Paint

Ok, mijn orignale vraag is veranderd. Hoe verander ik de intensiteit van hoe zoiets wordt bewerkstelligd?

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

in mijn droomwereld zou het zo gewerkt hebben

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

de 10 is een intensiteitsniveau.


Een voorbeeld zou zijn als ik een flikkerende kaars zou hebben, als de kaars helder brandt ik wil dat de bitmaps die ik naar het scherm trek om hun origanol kleur en helderheid te behouden, als het flikkert ik wil dat de bitmaps bijna worden verduisterd, en ik wil om de Bitmaps donkerder te maken terwijl het licht dimt.

Ik heb vergelijkingen, timers en alles wat ik bedacht heb, gewoon niet hoe ik het daadwerkelijk kan toepassen om de kleur/helderheid te veranderen. Misschien is het branden van de beelden waarnaar ik op zoek ben? Ik wil gewoon de lichtheid veranderen lol.

Ik heb zin om paint.setShader te gebruiken, is misschien een oplossing, maar de informatie op dit gebied is vrij beperkt van wat ik heb kunnen vinden. Alle hulp wordt op prijs gesteld.

edit: om kristalhelder te zijn, ben ik op zoek naar een manier om bitmaps te verlichten/verduisteren terwijl ik ze naar het canvas teken

3
mogelijk iets hier Paint.setXfermode (nieuwe PorterDuffXfermode (Mode.LIGHTEN)); zelfs als dat zo is, hoe zou ik de waarde van de bliksem/donker worden veranderen
toegevoegd de auteur WIllJBD, de bron
Het is verbazingwekkend hoe ik uren heb gezocht en niets bedacht en nu begin ik het uit te zoeken ... Godzijdank voor de goede mensen die exaples hebben gepost van wat doet wat vollnixx.wordpress.com/2012/06/06/&ellicle;
toegevoegd de auteur WIllJBD, de bron
hoe pas je de intensiteit van de duisternis aan
toegevoegd de auteur MetaSnarf, de bron

2 antwoord

Deze twee benaderingen kunnen uw probleem oplossen:

  1. Plaats een donkere rechthoek achter uw bitmap en stel de Bitmap's in ondoorzichtigheid.

  2. Gebruik ColorFilter op uw Paint wanneer u de bitmap tekent. Gebruik een semi-transparante zwarte kleur om uw bitmap donkerder te maken

9
toegevoegd
Kan je me een coderegel geven om te weten hoe ik dat zou doen?
toegevoegd de auteur WIllJBD, de bron
verf = nieuwe verf (); ColorFilter filter = new LightingColorFilter (0xFF222222, 0x00000000); paint.setColorFilter (filter);
toegevoegd de auteur WIllJBD, de bron
@Soham hoe de duisternis kanalen aanpassen?
toegevoegd de auteur MetaSnarf, de bron
De methode die WIllJBD noemt is geweldig, werkt perfect, je kunt zelfs de donkerheidsniveaus aanpassen.
toegevoegd de auteur Soham, de bron
als uw bitmap een aantal transparante gebieden heeft, werkt het gebruik van een eenvoudige rechthoek niet omdat u deze hieronder ziet. in plaats daarvan kunt u beide benaderingen gebruiken en eerst een bitmap tekenen met LightingColorFilter (0xFF000000, 0x00000000) en vervolgens dezelfde bitmap normaal
toegevoegd de auteur serine, de bron

Hé, ik heb een soort truc gebruikt om de zwarte lijn te verwijderen. In mijn wisteknop heb ik de kleur op wit gezet, in plaats van XferMode te gebruiken. Het werkt en ziet er goed uit ..

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