【问题标题】:changing the intensity of lighten/darken on bitmaps using PorterDuffXfermode in the Android Paint class在 Android Paint 类中使用 PorterDuffXfermode 更改位图上的亮/暗强度
【发布时间】:2013-09-24 04:46:37
【问题描述】:

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

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

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

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

10 是强度级别。


举个例子,如果我有一支闪烁的蜡烛,当蜡烛燃烧得很亮时,我希望我在屏幕上绘制的位图保持它们的有机酚颜色和亮度,当它闪烁时,我希望位图几乎变黑,我想在灯光变暗时使位图变暗。

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

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

编辑:为了清楚起见,我正在寻找一种在将位图绘制到画布时使它们变亮/变暗的方法

【问题讨论】:

  • 这里可能有一些东西 Paint.setXfermode(new PorterDuffXfermode(Mode.LIGHTEN));即使是这样,我将如何改变变亮/变暗的值
  • 令人惊讶的是,我搜索了几个小时却一无所获,现在我开始弄明白了……感谢那些发布示例的好人vollnixx.wordpress.com/2012/06/06/…
  • 如何调整黑暗强度

标签: java android graphics shader paint


【解决方案1】:

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

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

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

【讨论】:

  • paint = new Paint(); ColorFilter filter = new LightingColorFilter(0xFF222222, 0x00000000); paint.setColorFilter(filter);
  • 如果您的位图有一些透明区域,使用简单的矩形将不起作用,因为您会在下面看到它。相反,您可以同时使用这两种方法,首先使用 LightingColorFilter(0xFF000000, 0x00000000) 绘制位图,然后通常使用相同的位图
  • WIllJBD 提到的方法很棒,效果很好,甚至可以调整暗度。
  • @Soham 如何调整暗通道?
  • @MetaSnarf 你找到答案了吗?
【解决方案2】:

嘿,我使用了一种技巧来删除黑线。在我的擦除按钮中,我将颜色设置为白色,而不是使用 XferMode.. 它可以工作并且看起来不错..

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多