2012-06-24 42 views
3

好吧,我的原始问题已更改。我如何改变这种情况的强度?使用Android Paint类中的PorterDuffXfermode更改点亮/变暗亮度的强度

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

在我的梦中世界,将工作过这样

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

10是强度的水平。


一个例子是,如果我有一个闪烁的蜡烛,当蜡烛燃烧亮我想我在屏幕上绘图,以保留其origanol颜色和亮度的位图,当它闪烁我想要的位图是几乎变黑,而且我想在光线变暗时使Bitmap变暗。

我有等式,定时器和所有想出来的,只是没有如何实际应用它来改变颜色/亮度。 也许烧图像是我在找什么? 我只是想改变亮度哈哈。

我觉得像使用paint.setShader可能是一个解决方案,但在这方面的信息是相当有限的,我已经能够找到。任何帮助,将不胜感激。

编辑:要一清二楚,我正在寻找一种方式,以减轻/变暗位图我把它们画到画布

+0

可能在这里的东西Paint.setXfermode(new PorterDuffXfermode(Mode.LIGHTEN));即使如此,我将如何改变闪电/变暗的价值 – WIllJBD

+0

这是惊人的,我如何寻找几个小时,什么也没有想出来,现在我开始弄清楚了......感谢善良的人,什么是什么 http://vollnixx.wordpress.com/2012/06/06/android-porterduffxfermode-examples/ – WIllJBD

+0

你如何调整黑暗的强度 – MetaSnarf

回答

9

这两种方法可以解决你的问题:

  1. 放了在你的位图后面的黑色矩形,并设置位图的不透明度。

  2. 绘制位图时在您的Paint上使用ColorFilter。要加深你的位图使用半透明的黑色

+0

你可以给我一行代码,我怎么会去做? – WIllJBD

+11

paint = new Paint(); ColorFilter filter = new LightingColorFilter(0xFF222222,0x00000000); paint.setColorFilter(filter); – WIllJBD

+0

如果你的位图有一些透明的区域使用简单的矩形将无法正常工作,因为你会在下面看到它。相反,你可以使用这两种方法,并首先使用LightingColorFilter(0xFF000000,0x00000000)绘制位图,然后通常使用相同的位图 – serine

0

嘿,我已经使用了一个把戏,以消除黑line.In我的删除按钮,我已经将颜色设置为白色,而是采用XferMode。它的工作原理和看起来不错..

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