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

Java 在Android Paint类中使用PorterDuffXfermode更改位图上的亮/暗强度,java,android,graphics,shader,paint,Java,Android,Graphics,Shader,Paint,好的,我原来的问题变了。我该如何改变这种事情的影响强度 DayToNight.setXfermode(new PorterDuffXfermode(Mode.DST_IN)); 在我的梦境中,它会像这样工作 DayToNight.setXfermode(new PorterDuffXfermode(Mode.DST_IN(10))); 10是一个强度级别 例如,如果我有一支闪烁的蜡烛,当蜡烛燃烧时,我希望我在屏幕上绘制的位图保持其牛至颜色和亮度,当它闪烁时,我希望位图几乎变

好的,我原来的问题变了。我该如何改变这种事情的影响强度

    DayToNight.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
在我的梦境中,它会像这样工作

    DayToNight.setXfermode(new PorterDuffXfermode(Mode.DST_IN(10)));
10是一个强度级别


例如,如果我有一支闪烁的蜡烛,当蜡烛燃烧时,我希望我在屏幕上绘制的位图保持其牛至颜色和亮度,当它闪烁时,我希望位图几乎变暗,并且我希望随着灯光变暗,位图变暗

我有方程式、计时器和所有这些东西,只是不知道如何实际应用它们来改变颜色/亮度。 也许我在找的就是烧掉这些图像? 我只是想改变一下轻盈的lol

我觉得使用paint.setShader可能是一个解决方案,但从我所能找到的信息来看,这方面的信息非常有限。任何帮助都将不胜感激


编辑:为了清晰起见,我正在寻找一种在画布上绘制位图时使其变亮/变暗的方法。这两种方法可能会解决您的问题:

  • 在位图后面放置一个黑色矩形,并设置位图的 不透明

  • 绘制位图时,请在绘图上使用颜色过滤器。要使位图变暗,请使用半透明黑色


  • 嘿,我使用了一种技巧来删除黑线。在我的擦除按钮中,我将颜色设置为白色,而不是使用XferMode。。它很管用,看起来不错

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

    这里可能有一些东西Paint.setXfermode(新的PorterDuffXfermode(Mode.lighte));即使是这样,我该如何改变亮度/暗度的值真是太神奇了,我搜索了好几个小时却一无所获,现在我开始想办法了。。。感谢善良的人们,他们举了一个例子:什么是什么?你如何调整黑暗强度油漆=新油漆();ColorFilter过滤器=新的LightingColorFilter(0xFF2222222,0x00000000);油漆。设置颜色过滤器(过滤器);如果位图有一些透明区域,使用简单的矩形将不起作用,因为您将在下面看到它。相反,您可以使用这两种方法,首先使用LightingColorFilter(0xFF000000,0x00000000)绘制位图,然后正常绘制相同的位图。WIllJBD提到的方法很棒,工作非常完美,您甚至可以调整黑暗度。@Soham如何调整黑暗通道?@MetaSnarf您找到答案了吗?