gpt4 book ai didi

android - canvas.drawBitmap() 仅在它为 0 时支持 alpha 层

转载 作者:太空宇宙 更新时间:2023-11-03 11:22:24 25 4
gpt4 key购买 nike

我正在使用 BitmapFactory.decodeResource 加载 png 资源,然后使用 drawBitmap()Canvas 上绘制它们。

我一次绘制不同的层,这样透明对象应该遮挡它们应该遮挡的东西,但是当我的 png 中的 alpha 级别高于 0 时,它们似乎被忽略了。不渲染 alpha 为 0 的地方是正确的,但在 alpha 小于 255 的地方而不是将颜色与该像素处的现有颜色混合,它只是绘制它而根本没有任何 alpha 混合。

如何根据源图像的 alpha channel 在 Canvas 上绘制位图并进行适当的混合?相关代码 fragment 如下:

BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inPreferredConfig = Config.ARGB_8888;
...
decorationTextures[1] = new
TextureStatic(BitmapFactory.decodeResource(resources, R.drawable.ice_1, opt));
decorationTextures[2] = new
TextureStatic(BitmapFactory.decodeResource(resources, R.drawable.ice_2, opt));
...
if(mTexture != null && mInPlay) {
if(mZone != null)
canvas.drawBitmap(mTexture.getBitmap(),
mScreenX + mZone.getXOffset(),
mScreenY + mZone.getYOffset(), null);
else
canvas.drawBitmap(mTexture.getBitmap(), mScreenX, mScreenY, null);
}

最佳答案

您是否尝试过更改您的 SurfaceView(如果您正在使用一个)和/或您的 Window 的格式以匹配格式(ARGB_8888) 您正在使用的位图?这可能会阻止您获得真正的透明效果,无论如何,您应该尝试 match up your window/bitmap formats for better performance/quality .

尝试使用 Window.setFormat(PixelFormat.RGBA_8888);SurfaceHolder.setFormat(PixelFormat.RGBA_8888; 来设置像素格式。

关于android - canvas.drawBitmap() 仅在它为 0 时支持 alpha 层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5630682/

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