我正在创建一个像素狩猎游戏。所以我的活动显示了一个ImageView。我想创建一个提示“告诉我对象在哪里”。为此,我需要模糊整个图像,除了对象所在点周围的圆圈以外。除了模糊之外,我还可以显示半透明的黑色背景。在画布上绘制半透明矩形没有问题。但是我不知道如何从中切出一个透明的圆圈。结果应如下所示:
请帮助我在Android SDK上达到相同的结果。
所以最后我设法做到了。
首先,我在整个视图上绘制一个半透明的黑色矩形。之后,PorterDuff.Mode.CLEAR
我使用一个透明的圆圈显示猫的位置。
我有一个问题PorterDuff.Mode.CLEAR
:首先,我得到了一个黑色的圆圈,而不是一个透明的圆圈。
感谢Romain Guy在这里的评论:在这里的评论我知道我的窗口是不透明的,应该在另一个位图上绘制。并且只有在View
的画布上绘制之后。
这是我的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);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句