gpt4 book ai didi

java - 将 ImageView 作为 mask 应用到另一个 ImageView

转载 作者:行者123 更新时间:2023-12-02 04:38:41 25 4
gpt4 key购买 nike

我已经阅读了有关应用 .png 作为 ImageView 蒙版 ( Android how to apply mask on ImageView? ) 的帖子,但我很好奇是否可以在没有 .png 文件的情况下完成此操作。

我有一个占据整个屏幕的 ImageView。我想要的是掩盖它中间的一个正方形。但是我不想使用实际的 .png 文件并将其用作掩码。我想通过制作适当大小的 ImageView 然后使用该 ImageView 作为 mask 来“绘制”正方形。

这可能吗?

最佳答案

你不能只绘制一个圆形渐变而不是png的位图吗?我已经捕获了makeRadGrad你可以将它用作 answer 中的位图您链接:

private Bitmap mImage = ...;
private Bitmap mMask = ...; // png mask with transparency
private int mPosX = 0;
private int mPosY = 0;

private final Paint maskPaint;
private final Paint imagePaint;

public CustomView (final Context context) {
maskPaint = new Paint();
maskPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));

imagePaint = new Paint();
imagePaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OVER));

mImage = //set image
mMask = makeRadGrad(mImage.width()); //we'll just assume you have a perfectly square image

}

/* TODO
if you have more constructors, make sure you initialize maskPaint and imagePaint
Declaring these as final means that all your constructors have to initialize them.
Failure to do so = your code won't compile.
*/

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

canvas.save();
canvas.drawBitmap(mMask, 0, 0, maskPaint);
canvas.drawBitmap(mImage, mPosX, mPosY, imagePaint);
canvas.restore();
}

private Bitmap makeRadGrad(int size) {
int radius = (int) (size/2f);
RadialGradient gradient = new RadialGradient(radius, radius, radius, 0xFF00FF00,
0x00000000, android.graphics.Shader.TileMode.CLAMP);
Paint p = new Paint();
p.setDither(true);
p.setShader(gradient);

Bitmap bitmap = Bitmap.createBitmap(size, size, Config.ARGB_8888);
Canvas c = new Canvas(bitmap);
c.drawCircle(radius, radius, radius, p);

return bitmap;
}

关于java - 将 ImageView 作为 mask 应用到另一个 ImageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30442335/

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