How can i draw dash line on a canvas. I already tried this:
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);
And it gave me not dash line but a simple one.
To draw a dotted line in the HTML Canvas with JavaScript, we can use the setLineDash or mozDash method. to create the canvas. Then we call setLineDash or mozDash to set the line style to a dashed line.
To draw a line on a canvas, you use the following steps: First, create a new line by calling the beginPath() method. Second, move the drawing cursor to the point (x,y) without drawing a line by calling the moveTo(x, y) . Finally, draw a line from the previous point to the point (x,y) by calling the lineTo(x,y) method.
setARGB(255, 0, 0, 0); dashPaint. setStyle(Paint. Style. STROKE); dashPaint.
For drawing straight lines, use the lineTo() method. Draws a line from the current drawing position to the position specified by x and y . This method takes two arguments, x and y , which are the coordinates of the line's end point.
You are drawing a line, as per documentation, drawLine function will:
Draw a line segment with the specified start and stop x,y coordinates, using the specified paint.
Note that since a line is always "framed", the Style is ignored in the paint.
Degenerate lines (length is 0) will not be drawn.
canvas.drawLine(0, canvas.getHeight() / 2, canvas.getWidth(), canvas.getHeight() / 2, dashPaint)
To draw a dashed line, a suggestion is to use the Path primitive
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));
In onDraw()
canvas.drawPath(mPath, mPaint);
Snap shot
I have background and dashed line drew over it.
Example
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); } } }
Modify the above according to your needs.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With