gpt4 book ai didi

安卓 Canvas : draw transparent circle on image

转载 作者:行者123 更新时间:2023-12-05 07:43:10 30 4
gpt4 key购买 nike

我正在制作一款像素狩猎游戏。所以我的 Activity 显示了一个 ImageView。我想创建一个提示“告诉我对象在哪里”。为此,我需要模糊整个图像,除了对象所在点周围的圆圈。我可以显示一个半透明的黑色背景,而不是模糊。在Canvas上画一个半透明的矩形是没有问题的。但我不知道如何从中裁剪出一个透明的圆圈。结果应如下所示: enter image description here

请帮助我在 Android SDK 上实现相同的结果。

最佳答案

所以最后我设法做到了这一点。

首先,我在整个 View 上绘制了一个半透明的黑色矩形。之后使用 PorterDuff.Mode.CLEAR 我剪了一个透明圆圈来显示猫的位置。

我在使用 PorterDuff.Mode.CLEAR 时遇到问题:首先我得到的是黑色圆圈而不是透明圆圈。

在此感谢 Romain Guy 的评论:comment here我知道我的窗口是不透明的,我应该在另一个位图上绘制。并且仅在 View 的 Canvas 上绘制之后。

这是我的onDraw 方法:

private Canvas temp;
private Paint paint;
private Paint p = new Paint();
private Paint transparentPaint;

private void init(){
Bitmap bitmap = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Bitmap.Config.ARGB_8888);
temp = new Canvas(bitmap);
paint = new Paint();
paint.setColor(0xcc000000);
transparentPaint = new Paint();
transparentPaint.setColor(getResources().getColor(android.R.color.transparent));
transparentPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
}

protected void onDraw(Canvas canvas) {
temp.drawRect(0, 0, temp.getWidth(), temp.getHeight(), paint);
temp.drawCircle(catPosition.x + radius / 2, catPosition.y + radius / 2, radius, transparentPaint);
canvas.drawBitmap(bitmap, 0, 0, p);
}

关于安卓 Canvas : draw transparent circle on image,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43943923/

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