繁体   English   中英

尝试在Android画布上进行聚光灯效果

[英]Trying to do a spotlight effect in android canvas

我有一个画布和一个用于背景图像的简单位图,填充了整个屏幕。 我创建了一个涂成黑色的rect,并将其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.
}

有什么想法我应该完成吗? 谢谢!

对于聚光灯下,你可以画黑暗中的原始图像的圆。 您只需要找到原始图像的正确矩形(基于手指的位置),然后在黑暗中绘制该特定矩形的圆即可。 试图“穿越”黑暗不会真正带你到任何地方。 您需要在上面放置一些东西。

到绘制“聚光灯”时,您已经用矩形使图像变暗了。 恢复在抽签过程中丢失的信息将很困难。

一种更灵活的方法是在单独的图像中绘制一个带有聚光灯的暗矩形(即,首先合成“暗度”,然后聚光alpha和颜色蒙版图像),然后将该蒙版图像作为背景绘制在背景顶部单独的步骤。 这也可以让您轻松地执行诸如给聚光灯模糊边界的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM