gpt4 book ai didi

java - 用 Paint 给位图着色?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:01 26 4
gpt4 key购买 nike

我正在尝试创建一个为位图着色的函数,

这有效...

 imgPaint = new Paint();

imgPaint.setColorFilter(new LightingColorFilter(color,0));

//when image is being drawn
canvas.drawBitmap(img,matrix,imgPaint);

但是,当必须不断(每一帧)绘制位图时,我开始看到屏幕滞后,因为这在设置滤色器之前没有发生,我相信它在我需要时每次都应用滤镜绘制的 Canvas 。

有没有一种方法可以对位图进行一次绘制并使其永久更改?

感谢任何帮助:)

最佳答案

创建第二个位图并使用滤色器将第一个位图绘制到其中。然后使用第二个位图进行大容量渲染。

编辑:根据请求,这里是执行此操作的代码:

public Bitmap makeTintedBitmap(Bitmap src, int color) {
Bitmap result = Bitmap.createBitmap(src.getWidth(), src.getHeight(), src.getConfig());
Canvas c = new Canvas(result);
Paint paint = new Paint();
paint.setColorFilter(new LightingColorFilter(color,0));
c.drawBitmap(src, 0, 0, paint);
return result;
}

然后您将调用此方法一次以将位图转换为着色位图并将结果保存在实例变量中。然后,您可以在绘制到 canvas 的方法中直接使用着色位图(无需滤色器)。 (预先分配您将在主绘制方法中使用的 Paint 对象并将其保存在实例变量中也是一个好主意,而不是分配一个新的 Paint 每次抽奖。)

关于java - 用 Paint 给位图着色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4856119/

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