gpt4 book ai didi

android - PorterDuff.Mode.DST_IN 在应该透明的地方变黑

转载 作者:行者123 更新时间:2023-11-29 17:46:03 31 4
gpt4 key购买 nike

图像透明的地方,我变黑了......

我已经用位图 Canvas 上的另一个图像对图像进行了同样的处理,并且效果很好,但是当我尝试在自定义 View 的 onDraw 内部进行屏蔽时,它不起作用。

我尝试了一切,在图像 mask 、路径、其他图像之前绘制矩形,一切都在它应该透明的地方保持黑色。我搜索了人们在使用 CLEAR 模式时遇到的许多其他问题,但它没有用。

请帮忙!

    mBGPaint = new Paint();
mBGPaint.setStyle(Paint.Style.FILL);
mBGPaint.setColor(Color.TRANSPARENT);

mRectSrc = new Rect();
mRectDst = new Rect();

mask = BitmapFactory.decodeResource(getResources(), R.drawable.big_balloon_path);
maskPaint = new Paint();
maskPaint.setFilterBitmap(true);
maskPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));

mRectSrc.set(0, 0, mask.getWidth(),mask.getHeight() );
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);

mRectDst.set(0,0,this.getMeasuredWidth(),this.getMeasuredHeight());
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

canvas.drawRect(0, 0, this.getMeasuredWidth(), this.getMeasuredHeight(), mBGPaint);
canvas.drawBitmap(mask, mRectSrc, mRectDst, maskPaint);

最佳答案

您可能需要在 View 的初始化中开启软件渲染:

setLayerType(LAYER_TYPE_SOFTWARE, null);

许多 Android 绘图命令在使用默认设置的硬件渲染时静默失败或产生不正确的结果。

关于android - PorterDuff.Mode.DST_IN 在应该透明的地方变黑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26642351/

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