user2726456
user2726456

Reputation:

Draw a line with curved edges in Android

I am using canvas.drawLine to draw some line in android but the lines are too sharp but i need a curved edges enter image description here

Here the 1 is what i have and 2 is what i want to achieve, means a line with curved edges rather than straight edges

How can I achieve that ??

EDIT 2:

I am trying to use the Canvas object to to draw a line. but the lines have a sharp edge, I need a rounded off edge I am using the Paint object

mPaint = new Paint();
mPaint.setColor(Color.BLACK)

Any help would be appreciated great.

Upvotes: 19

Views: 14099

Answers (4)

Aditya Gaurav
Aditya Gaurav

Reputation: 11

path = new Path();
path.moveTo(50, 50);
path.lineTo(50, 500);
path.lineTo(200, 500);
path.lineTo(200, 300);
path.lineTo(350, 300);

float radius = 50.0f;
CornerPathEffect cornerPathEffect = new CornerPathEffect(radius);
paint.setPathEffect(cornerPathEffect);
// this setPathEffect will set the curve edges for every new joining

canvas.drawPath(path, paint);

Go through this link , This Link will teach you proper usages

Upvotes: 0

El farouk
El farouk

Reputation: 165

this is for kotlin Jetpack Compose users : use the cap attribute

Canvas(modifier = Modifier.fillMaxSize()) {

            // Fetching width and height for
            // setting start x and end y

            val canvasHeight = size.height
            
            // drawing a line between start(x,y) and end(x,y)
            drawLine(
                start = Offset(x = 0f, y = 0.12f * canvasHeight),
                end = Offset(x = 0f, y =0.5f *canvasHeight),
                color = Color.Red,
                strokeWidth = 10F,
                cap = StrokeCap.Round
            )
        }

enter image description here

Upvotes: 0

Jithin Jude
Jithin Jude

Reputation: 920

You can use below

pitchPaint.setStrokeCap(Paint.Cap.ROUND)

Upvotes: 0

GareginSargsyan
GareginSargsyan

Reputation: 1895

Use the Paint.setStrokeCap() method. You need Paint.Cap.ROUND. The default one is Paint.Cap.BUTT. There is a similar Path property that is called path join. It determines how to draw the parts of the path where it's constituent segments join. To set it use Path.setPathJoin(). You might need it in the future. Good luck.

Upvotes: 47

Related Questions