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

标签 java android graphics shader paint

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

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

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

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

10 代表强度水平。


一个例子是,如果我有一根闪烁的蜡烛,当蜡烛燃烧得很亮时,我希望我在屏幕上绘制的位图保留其原甘醇颜色和亮度,当它闪烁时,我希望位图几乎变黑,我想在光线变暗时使位图变暗。

我有方程式、计时器和所有计算出来的东西,只是不知道如何实际应用它来改变颜色/亮度。 也许刻录图像是我要找的? 我只想改变亮度,哈哈。

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

编辑:明确地说,我正在寻找一种在将位图绘制到 Canvas 时使它们变亮/变暗的方法

最佳答案

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

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

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

关于java - 在 Android Paint 类中使用 PorterDuffXfermode 更改位图上的亮/暗强度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11174583/

相关文章:

Java int 零前缀?

java - 更改 for 循环的初始值

java - 异步扩展 Java SWT 树

java - 带有变量的Android TextView id?

java - 根据关键字将一组字符串复制到局部变量

java - Android:使用接口(interface)中未定义的 MainActivity 方法的 fragment ?

Android:如何从 Activity 到 Service 到第二个 Activity

java - Java 中的drawImage() "null"

c++ - 在 C++/OpenGL 中使用 PlaySound() 在后台播放声音

c# - 使用构造函数或图形缩放位图的结果?