gpt4 book ai didi

android - 蜂窝硬件加速似乎不适用于 setColorFilter

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:10:07 26 4
gpt4 key购买 nike

此代码使用位图的 alpha channel 绘制单一颜色(带 alpha)形状。

Bitmap alphaMask = bitmap.extractAlpha();
Paint paint = new Paint();
int color = Color.GRAY;
...
paint.setColor(color);
paint.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.DST_IN));
...
canvas.drawBitmap(alphaMask, x, y, paint);

例如,它会将左边的 Bitmap 绘制到 Canvas 上,就像它出现在右边一样:

enter image description here

但是,在开启硬件加速的情况下,它在 Honeycomb (Android 3.0) 上不起作用。无论如何,它都会将形状绘制为黑色。它忽略颜色值。但是,它在启用硬件加速的 ICS (Android 4.0) 上工作得很好。

我知道一些 API 不支持硬件加速,如 Romain Guy documented here ,在 What drawing operations are supported? 下,但我似乎没有使用任何提到的不受支持的操作。

此外,听起来他说 setColorFilter 应该有效 at this post .

我的代码中是否有 Honeycomb 不支持的内容?任何解决方法?在这种情况下,我希望保留硬件加速。

谢谢

最佳答案

Android 3.0 处理 alpha8 位图的方式存在错误。我对此感到非常抱歉,因为这完全是我的错。然而,此问题已在 Android 4.0 中得到修复。

有两种可能的解决方法:- 在您的 View 上设置软件层类型- 或者创建您自己的位图并在其中渲染您需要的内容。然后,您可以在硬件加速的 Canvas 上绘制此位图。

关于android - 蜂窝硬件加速似乎不适用于 setColorFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9881368/

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