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

WIl*_*JBD 3 java graphics shader android paint

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

    DayToNight.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
Run Code Online (Sandbox Code Playgroud)

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

    DayToNight.setXfermode(new PorterDuffXfermode(Mode.DST_IN(10)));
Run Code Online (Sandbox Code Playgroud)

10是一个强度水平.


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

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

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

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

K_A*_*nas 9

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

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

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

  • paint = new Paint(); ColorFilter filter = new LightingColorFilter(0xFF222222,0x00000000); paint.setColorFilter(过滤器); (11认同)