わかりにくいかもしれないですが、下記の画像のようになります。
実際にはBlurMaskFilterでぼかしをかけることでそれっぽく見せてるだけです。
具体的には次のようなコードでPaintを宣言しておきます。
float width = 7f;
float blueWidth = width*2.0f;
mPaint = new Paint();
mPaint.setStrokeWidth(width);
mPaint.setAntiAlias(true);
mPaint.setDither(true);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeJoin(Paint.Join.ROUND);
mPaint.setStrokeCap(Paint.Cap.ROUND);
mBlurPaint = new Paint();
mBlurPaint.set(mPaint);
mBlurPaint.setStrokeWidth(blueWidth);
mBlurPaint.setMaskFilter(new BlurMaskFilter(blueWidth/2, BlurMaskFilter.Blur.NORMAL));
ぼかし用のPaintのほうの太さを2倍ぐらいにして、ぼかし幅はその半分ぐらいにしていますが、これは調整していてこれぐらいがちょうど良かっただけなので、もっとぼかしたいというのであれば、BlurPaintのほうの太さをもっと太くし、ぼかし幅も大きくすれば良いと思います。
これをもとに、同じPathに描画を2回してあげれば上記のような画像になります。
canvas.drawPath(path, mPaint);
canvas.drawPath(path, mBlurPaint);

No comments:
Post a Comment