[英]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.