试图在Android画布上做一个聚光灯效果

时间:2014-03-22 18:58:42

标签: java android canvas

我有一个画布和一个简单的背景图像位图,填满整个屏幕。我创建了一个涂成黑色的矩形,并将其alpha设置为250,以便对背景图像产生“暗”效果。我的目标是制作一个简单的圆形物体,揭示它悬停在上面的地方。我试着在很多方面思考如何超越它并失败。

我认为最好的方法是创建一个简单的圆圈,设法减少它在上面悬停的位置上的黑暗alpha,但我不知道该怎么做。

我的代码的相关部分:

private ColorFilter filter = new LightingColorFilter(Color.BLACK, 1);
private Paint darkPaint = new Paint(Color.BLACK), paint = new Paint(), paint2 = new Paint();//The style of the text and dark.

public DarkRoomView(Context context) {
        super(context);
        myChild = this;
        darkPaint.setColorFilter(filter);
                darkPaint.setAlpha(250);
        paint2.setAlpha(10);
        paint.setAlpha(50);
    }

private void loadGFX() {//Loads all of this view GFX file.
        backgroundImage = BitmapFactory.decodeResource(getResources(),                R.drawable.darkroomscreen);

        lightImage = BitmapFactory.decodeResource(getResources(), R.drawable.light);

    }

private void drawGFX(Canvas canvas) {
      canvas.drawBitmap(backgroundImage, 0, 0, paint2);//The backgeound image.
      canvas.drawRect(0, 0, WIDTH, HEIGHT, darkPaint);//The darkness.
      canvas.drawBitmap(lightImage, 50, 50, paint);//A spotlight.
}

我应该如何完成它? 谢谢!

2 个答案:

答案 0 :(得分:1)

对于聚光灯,您可以在黑暗中绘制原始图像的圆圈。你只需要找到原始图像的正确矩形(根据手指的位置),然后在黑暗中绘制一个特定矩形的圆圈。试图“穿越”黑暗并不能真正让你到任何地方;你需要在它上面放一些东西。

答案 1 :(得分:0)

当您绘制“聚光灯”时,您已经使用矩形使图像变暗。很难恢复在抽奖期间丢失的信息。

更灵活的方法是在单独的图像中绘制带有聚光灯的暗矩形(即,首先构成“黑暗”和聚光灯alpha和颜色遮罩图像),然后在该顶部绘制遮罩图像。背景作为一个单独的步骤。这也可以让你轻松做到像给聚光灯模糊边界。