Android ColorFilter - Porter-Duff模式

Ale*_*ran 14 android colors filter colorfilter porter-duff

我正在尝试解决android的问题ColorFilters.文档很差,所以主要方法是尝试不同的变体.

问题:

有一个位图.一些像素具有alpha = 255,其他像素具有alpha = 0.我正在尝试绘制一个具有特定颜色的圆圈.我想在位图中不改变alpha通道,但在绘图时我想将颜色乘以位图-α.

因此,在绘制圆形时,我希望不绘制alpha = 0的像素,但是alpha = 255的像素要涂上我想要的颜色.Alpha通道不应该改变.

我正在尝试使用porter-duff ColorFilter(android sdk中的PorterDuffColorFilter类).

官方网站上有太多的模式和不可理解的描述:http://developer.android.com/reference/android/graphics/PorterDuff.Mode.html

我想我应该使用DST_ATOPSRC_ATOP,但它们不像我描述的那样工作.

此外,srcColor在porter-duff colorfilter的构造函数中有一个奇怪的参数.

我无法理解"Sa"和"Sc"在公式中的含义[Da, Sc * Da + (1 - Sa) * Dc].它可以来自传递给colorfilter构造函数的颜色,也可以通过"paint.setColor"进行颜色设置.

谁知道,它是如何工作的?

Jav*_*ave 10

Sa并且Sc分别是"源alpha"和"源颜色"的短路.构造函数中的srcColor参数PorterDuffColorFilter是用于这些值的颜色.

对于你的情况,Mode.MULTIPLY这可能是最好的.


Law*_*iro 5

请注意,Porter-Duff模式仅定义为与预乘alpha一起正常工作.这意味着R,G或B组分都不能超过α值.

Android项目的GitHub项目,展示了所有Porter-Duff模式.该Android应用程序也可在Play商店中.