如何使自定义画笔在Android的canvas?

在我的canvas应用程序,我想使用自定义画笔,如刷在附加image.so请有人帮助我快我怎么能使附加的图像自定义画笔?

在我的应用程序中,我使用下面的代码作了虚线:

mPaint.setPathEffect(new DashPathEffect(new float[] { 8, 8 }, 0)); 

并使用以下代码获得模糊和浮雕效果:

  mEmboss = new EmbossMaskFilter(new float[] { 1, 1, 1 }, 0.4f, 6, 3.5f); mBlur = new BlurMaskFilter(8, BlurMaskFilter.Blur.NORMAL); 

在这里输入图像说明

Solutions Collecting From Web of "如何使自定义画笔在Android的canvas?"

正如你可以清楚地看到的,没有平凡的着色效果/矩形/圆圈可以做到这一点。 图像/位图被使用。

所以只需使用canvas.drawBitmap重复绘制位图。 手指移动时,您一次又一次绘制相同的位图。

要添加自定义颜色,您可以添加一个简单的filter。

一个例子

 public class CanvasBrushDrawing extends View { private Bitmap mBitmapBrush; private Vector2 mBitmapBrushDimensions; private List<Vector2> mPositions = new ArrayList<Vector2>(100); private static final class Vector2 { public Vector2(float x, float y) { this.x = x; this.y = y; } public final float x; public final float y; } public CanvasBrushDrawing(Context context) { super(context); // load your brush here mBitmapBrush = BitmapFactory.decodeResource(context.getResources(), R.drawable.splatter_brush); mBitmapBrushDimensions = new Vector2(mBitmapBrush.getWidth(), mBitmapBrush.getHeight()); setBackgroundColor(0xffffffff); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); for (Vector2 pos : mPositions) { canvas.drawBitmap(mBitmapBrush, pos.x, pos.y, null); } } @Override public boolean onTouchEvent(MotionEvent event) { int action = event.getAction(); switch (action) { case MotionEvent.ACTION_MOVE: final float posX = event.getX(); final float posY = event.getY(); mPositions.add(new Vector2(posX - mBitmapBrushDimensions.x / 2, posY - mBitmapBrushDimensions.y / 2)); invalidate(); } return true; } }