我正在为一个应用程序的UI工作,我试图使用灰度图标,并允许用户将主题更改为他们select的颜色。 要做到这一点,我试图只是应用某种ColorFilter覆盖绘制顶部的颜色。 我尝试过使用PorterDuff.Mode.MULTIPLY,它的工作原理几乎和我所需要的一样,只不过白色的颜色也覆盖了。 我最理想的东西就是Photoshop中的“颜色”混合模式,graphics保留其透明度和光度,并且只修改图像的颜色。 例如: 变 做了一些研究后,看起来ColorMatrixColorFilter类可以做我所需要的,但我似乎无法find指向如何使用matrix的任何资源。 这是一个4×5的matrix,但我需要知道的是我如何去devisematrix。 有任何想法吗? 编辑:所以没关系,到目前为止,我发现这个如下: 1 0 0 0 0 //red 0 1 0 0 0 //green 0 0 1 0 0 //blue 0 0 0 1 0 //alpha 这个matrix是单位matrix(应用时不作任何改变),数字范围从0到1(浮点数)。 该matrix将与每个像素相乘以转换为新的颜色。 所以这就是我开始模糊的地方。 所以我会认为每个像素将是一个1×4的向量,其中包含将与变换matrix点缀的argb值(例如0.2,0.5,0.8,1)。 所以要加倍图像的红色强度,可以使用如下matrix: 2 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 […]