gpt4 book ai didi

android - 如何从 Canvas 上删除路径区域 (Android)

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

我需要在 ImageView 上裁剪边角。不要将它们弄圆,而是从每个角上删除三角形。

似乎唯一的方法是覆盖 onDraw 方法并使用 Path 从 Canvas 上删除这些区域。问题是我没有纯色背景,所以我需要删除这些区域而不是用一些颜色填充它们。

我为此使用了以下代码:

@Override
protected void onDraw(Canvas canvas) {
Path path = new Path();
path.moveTo(0, 0);
path.lineTo(20, 0);
path.lineTo(0, 20);
path.close();

Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
canvas.drawPath(path, paint);
super.onDraw(canvas);
}

但是角变黑而不透明。你可以帮帮我吗?或者您可能知道我的任务的更好解决方案。这是它的样子。

enter image description here

最佳答案

为了使用透明颜色进行绘制,您必须使用Paint setXfermode,这仅在您将位图设置到 Canvas 时才有效。如果您按照以下步骤操作,您应该会得到想要的结果。

  1. 创建 Canvas 并设置其位图。

    mCanvas = new Canvas();
    mBitmap= Bitmap.createBitmap(scrw, scrh, Config.ARGB_8888);
    mCanvas.setBitmap(mBitmap);
  2. 当您想要删除某些内容时,您只需使用 setXfermode。

    if (isErasing)
    mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
    else
    mPaint.setXfermode(null);
  3. 现在您应该可以使用透明颜色绘制:

    mCanvas.drawPath(你的路径, mPaint);

关于android - 如何从 Canvas 上删除路径区域 (Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14333393/

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