2011-12-08 5 views

答えて

20

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

、次のコードを使用して、ブラーやエンボス効果を得る:

は私のアプリでは、私は次のコードを使用して点線を作りました些細なシェーダエフェクト/四角形/円でこれを達成することはできません。 イメージ/ビットマップが使用されています。

canvas.drawBitmapを使用してビットマップを単純に繰り返し描画します。指が動いている間、同じビットマップを何度も描画します。

カスタムカラーを追加する場合は、簡単なフィルタを追加できます。

アン例

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; 
    } 
} 
+0

は、あなたが任意の一つの質問で利用可能な上からブラシのいくつかの例を与えることができますか? – Pratik

+0

ああ、私はそれを行うことができます:) – poitroae

+0

あなたの答えは私がブラシとしてビットマップを描画するのに役立ちますが、私はcolorfilterの色を変更してからその行全体に適用されます – Hardik

関連する問題