我有一个画布和一个简单的背景图像位图,填满整个屏幕。我创建了一个涂成黑色的矩形,并将其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.
}
我应该如何完成它? 谢谢!
答案 0 :(得分:1)
对于聚光灯,您可以在黑暗中绘制原始图像的圆圈。你只需要找到原始图像的正确矩形(根据手指的位置),然后在黑暗中绘制一个特定矩形的圆圈。试图“穿越”黑暗并不能真正让你到任何地方;你需要在它上面放一些东西。
答案 1 :(得分:0)
当您绘制“聚光灯”时,您已经使用矩形使图像变暗。很难恢复在抽奖期间丢失的信息。
更灵活的方法是在单独的图像中绘制带有聚光灯的暗矩形(即,首先构成“黑暗”和聚光灯alpha和颜色遮罩图像),然后在该顶部绘制遮罩图像。背景作为一个单独的步骤。这也可以让你轻松做到像给聚光灯模糊边界。