gpt4 book ai didi

Android:更改png文件颜色的最简单方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:17:36 24 4
gpt4 key购买 nike

我正在编写一个具有基本 Sprite (气球)的游戏 - 目前我有 2 个我创建的不同颜色的气球 PNG 文件,我需要创建更多(可能另外 5 个左右)并且不想要有 7 个不同的 png 文件。 (这将是 20 个额外的文件,因为我有 4 种不同的大小用于缩放目的)我宁愿坚持 1 - 我现在拥有的文件是黄色和红色的(几乎是实心的,但不完全是 - 他们有详细信息)。

问题 - 是否有一种简单的方法可以更改现有 PNG 文件的颜色?我见过有人提到 setColorsetColorFilter 但我不知道如何使用它们。此外,这些是否适用于已经有颜色的 PNG 文件,或者它们是否仅适用于白色 PNG 文件(我不认为我的 PNG 实际上只能是白色)?

谢谢大家,我们将不胜感激。

最佳答案

您可以只使用黑色气球 png 文件来创建不同颜色的气球。下面的代码使用一些奇特的混合模式技巧来设置颜色。

protected BitmapDrawable setIconColor(int color) {
if (color == 0) {
color = 0xffffffff;
}

final Resources res = getResources();
Drawable maskDrawable = res.getDrawable(R.drawable.actionbar_icon_mask);
if (!(maskDrawable instanceof BitmapDrawable)) {
return;
}

Bitmap maskBitmap = ((BitmapDrawable) maskDrawable).getBitmap();
final int width = maskBitmap.getWidth();
final int height = maskBitmap.getHeight();

Bitmap outBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(outBitmap);
canvas.drawBitmap(maskBitmap, 0, 0, null);

Paint maskedPaint = new Paint();
maskedPaint.setColor(color);
maskedPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP));

canvas.drawRect(0, 0, width, height, maskedPaint);

BitmapDrawable outDrawable = new BitmapDrawable(res, outBitmap);
return outDrawable;
}

关于Android:更改png文件颜色的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14093970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com