我正在尝试解决android ColorFilters的一个问题。文档非常差,所以main方法是尝试不同的变体。
问题是:
有一个位图。一些像素具有alpha=255,其他像素具有alpha=0。我正试着画一个特定颜色的圆圈。我希望alpha通道在位图中保持不变,但在绘制时,我希望将颜色乘以位图alpha。
所以,当我画一个圆的时候,我希望alpha=0的像素不被绘制,但是alpha=255的像素被绘制成我想要的颜色。Alpha通道不应该改变。
我正在尝试使用porter-duff ( android sdk中的PorterDuffColorFilter类)。
官方网站上有太多的模式和难以理解的描述:http://developer.android.com/reference/android/graphics/PorterDuff.Mode.html
我认为我应该使用DST_ATOP或SRC_ATOP,但它们并不像我所描述的那样工作。
此外,在porter-duff的构造函数中有一个奇怪的参数srcColor。
我不明白公式[Da, Sc * Da + (1 - Sa) * Dc]中的"Sa“和"Sc”是什么意思。它可以是传入colorfilter构造函数的颜色,也可以通过"paint.setColor“设置颜色。
有谁知道它是如何工作的吗?
发布于 2012-04-20 20:02:13
Sa和Sc分别是"source alpha“和"source color”的缩写。PorterDuffColorFilter构造函数中的srcColor参数是用于这些值的颜色。
对于您的情况,Mode.MULTIPLY可能工作得最好。
发布于 2012-04-22 15:31:27
请注意,Porter-Duff模式仅定义为与预乘的alpha一起正常工作。这意味着R、G或B分量都不能超过alpha值。
安卓项目的GitHub project,它展示了所有的波特-达夫模式。Android App也可以在Playstore上买到。
发布于 2012-12-17 02:46:13
经过一些研究,我得出了以下关于安卓PorterDuff颜色模式的结论。
公共静态最终PorterDuff.Mode服务,Sc
它应用了源颜色和源Alpha,我认为上面的setColorFilter方法desiredColor的颜色和Alpha值是正确的,我得到了正确的颜色值,即颜色和Alpha正确地应用于新的可绘制,但该图像上的三角形被完全清洗/删除。所以我不得不使用ColorMatrixFilter和设置矩阵,并将Alpha值分别设置为drawable。
https://stackoverflow.com/questions/10245681
复制相似问题