使用Android Paint类中的PorterDuffXfermode更改位图上的变亮/变暗强度

时间:2012-06-24 02:38:52

标签: java android graphics shader paint

好的,我的原始问题已经改变了。我如何改变这样的事情的强度?

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

在我梦想的世界里它会像这样工作

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

10是强度水平。


一个例子是,如果我有一个闪烁的蜡烛,当蜡烛燃烧明亮时,我想要我在屏幕上绘制的位图以保持其原始颜色和亮度,当它闪烁时,我希望位图几乎变黑,当灯光变暗时,我想让位图变暗。

我有方程式,计时器和所有想出来的,而不是如何实际应用它来改变颜色/亮度。 也许燃烧图像是我正在寻找的? 我只是想改变轻盈大声笑。

我觉得使用paint.setShader可能是一个解决方案,但是这个领域的信息与我能够找到的相比非常有限。任何帮助将不胜感激。

编辑:要清楚,我正在寻找一种方法来减轻/缩小位图,因为我将它们绘制到画布上

2 个答案:

答案 0 :(得分:9)

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

  1. 在位图后面放置一个黑色矩形并设置位图 不透明度。

  2. 绘制位图时在Paint上使用ColorFilter。要使位图变暗,请使用半透明的黑色

答案 1 :(得分:0)

嘿我用了一种技巧来删除黑线。在我的擦除按钮中,我将颜色设置为白色,而不是使用XferMode ..它的工作效果很好..

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