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