簡體   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