2013-05-13 53 views
15

Làm cách nào để vẽ đường gạch ngang trên canvas. Tôi đã thử điều này:Vẽ đường gạch ngang trên Canvas

Paint dashPaint = new Paint(); 
dashPaint.setARGB(255, 0, 0, 0); 
dashPaint.setStyle(Paint.Style.STROKE); 
dashPaint.setPathEffect(new DashPathEffect(new float[]{5, 10, 15, 20}, 0)); 
canvas.drawLine(0, canvas.getHeight()/2, canvas.getWidth(), canvas.getHeight()/2, dashPaint); 

Và nó đã cho tôi không gạch ngang nhưng đơn giản.

+0

bạn có cần vẽ các đường đứt nét bằng ngón tay không? – Raghunandan

+0

Tôi đã viết chế độ xem vẽ đường gạch ngang. Bạn có thể xem chi tiết [tại đây] (http://stackoverflow.com/a/15492685/1251276) – ruidge

Trả lời

47

Bạn đang vẽ một đường

canvas.drawLine(0, canvas.getHeight()/2, canvas.getWidth(), canvas.getHeight()/2, dashPaint) 

này sẽ vẽ một đường

Giải pháp

 private Path mPath; 
     mPath = new Path(); 
     mPath.moveTo(0, h/2); 
     mPath.quadTo(w/2, h/2, w, h/2); 
     h and w are height and width of the screen 
     Paint mPaint = new Paint(); 
     mPaint.setARGB(255, 0, 0, 0); 
     mPaint.setStyle(Paint.Style.STROKE); 
     mPaint.setPathEffect(new DashPathEffect(new float[]{5, 10, 15, 20}, 0)); 

Trong OnDraw()

 canvas.drawPath(mPath, mPaint); 

Snap bắn

012.

enter image description here

Tôi có đường nền và đường đứt nét vẽ lên nó.

Ví dụ

public class FingerPaintActivity extends Activity { 
    MyView mv; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mv = new MyView(this); 
     setContentView(mv); 
     mPaint = new Paint(); 
     mPaint.setAntiAlias(true); 
     mPaint.setDither(true); 
     mPaint.setColor(0xFFFF0000); 
     mPaint.setARGB(255, 0, 0, 0); 
     mPaint.setStyle(Paint.Style.STROKE); 
     mPaint.setPathEffect(new DashPathEffect(new float[]{10, 40,}, 0)); 
     mPaint.setStrokeWidth(12); 
    } 

    private Paint mPaint; 

    public class MyView extends View { 
     private Bitmap mBitmap; 
     private Canvas mCanvas; 
     private Path mPath; 
     private Paint mBitmapPaint; 
     Context context; 

     public MyView(Context c) { 
      super(c); 
      context = c; 
      mPath = new Path(); 
      mBitmapPaint = new Paint(Paint.DITHER_FLAG); 
     } 

     @Override 
     protected void onSizeChanged(int w, int h, int oldw, int oldh) { 
      super.onSizeChanged(w, h, oldw, oldh); 
      mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); 
      mCanvas = new Canvas(mBitmap); 
      mPath.moveTo(0, h/2); 
      mPath.quadTo(w/2, h/2, w, h/2); 
     } 

     @Override 
     protected void onDraw(Canvas canvas) { 
      super.onDraw(canvas); 
      canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint); 
      canvas.drawPath(mPath, mPaint); 
     } 
    } 
} 

Sửa đổi trên theo yêu cầu của bạn.

Các vấn đề liên quan