4

我需要一些帮助来实现我想要实现的目标。我BitmapShader在我的应用程序中使用在画布上绘图。我正在将自定义 png 文件设置为我的绘画变量的着色器,并且我想更改着色器的颜色。

这是我正在使用的示例代码:

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.particle_point);
    BitmapShader shader = new BitmapShader(bitmap, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
    mPaint.setShader(shader);
    ColorFilter filter = new LightingColorFilter(0xFFFFFFFF , 0x000000FF );
    mPaint.setColorFilter(filter);

我发现我可以使用以下方法更改它的颜色:

ColorFilter filter = new LightingColorFilter(0xFFFFFFFF , 0x000000FF );

,但我需要能够通过使用自定义颜色选择器来更改它的颜色,它返回类似于此的颜色代码:-234423123

那么有什么方法可以使用此颜色代码并将其设置为我的绘画变量的颜色。

提前致谢!

4

3 回答 3

3

您要转换为十六进制的颜色是:FFFFFFFFF206FCAD。所以你需要去掉前面的 8 个 F:

int color = -234423123;//0xFFFFFFFFF206FCAD
int myColor = 0x00000000FFFFFFFF & color;

myColor 应该没问题。

于 2012-04-25T14:35:51.620 回答
1

只是为莫斯的答案添加一点细节。正如他建议的那样,您可以将myColor其用作所需的值,并为着色器设置正确的值,您必须像这样添加myColor到您的着色器中LightingColorFilter

ColorFilter filter = new LightingColorFilter(myColor , myColor );

它应该工作。

于 2012-04-25T15:01:59.693 回答
0

要获取十六进制字符串:

"#"+Integer.toHexString(n));

但是您的颜色选择器只返回颜色的 int 值,这应该足以使用!

ColorFilter filter = new LightingColorFilter(0xFFFFFFFF , 0x000000FF );

只需将代表颜色的值更改为您的颜色选择器返回的 int...(当然前面没有 0x)...

如果我没记错的话,这应该可以正常工作!

于 2012-04-25T14:38:43.823 回答