web-dev-qa-db-ja.com

キャンバスに描かれた形状の周りに影を作成しますか?

形状を作成するために必要なステップ。キャンバスを使用して最初から影を付けた長方形?

長方形の描画に使用されるペイントにシャドウレイヤーを追加しても、成功しませんでした。

19
mgibson

ビットマップは必要ありません。レイヤータイプをLAYER_TYPE_SOFTWAREに設定するだけで、元のアプローチが機能しました。

public class TestShapeShadow extends View
{
    Paint paint;

    public TestShapeShadow(Context context)
    {
       super(context);  

        Paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        Paint.setShadowLayer(12, 0, 0, Color.YELLOW);

        // Important for certain APIs 
        setLayerType(LAYER_TYPE_SOFTWARE, Paint);
    }

    @Override
    protected void onDraw(Canvas canvas)
    {   
        canvas.drawRect(20, 20, 100, 100, Paint);
    }
}
35
mgibson
  1. 作成します。パス、それにいくつかの要素を追加

  2. blurMaskFilterをPaintに設定します

  3. dx、dy shadowオフセットでパスを描く

  4. マスクフィルターの設定を解除

  5. なしでもう一度パスを描きます。オフセット

6
pskink