Reputation: 30147
Can I draw with anti-aliasing on canvas?
I need my circles and line have smooth edges.
Upvotes: 58
Views: 35058
Reputation: 45160
You can provide ANTI_ALIAS_FLAG
in Paint constructor Paint(int)
. The ANTI_ALIAS_FLAG
flag enables antialiasing when drawing. Enabling this flag will cause all draw operations that support antialiasing to use it.
Or you can set this flag later using setFlags(int)
method
Example implementation In Kotlin:
//Paint
private var indicatorPaint: Paint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
isAntiAlias = true
color = fillColor
strokeWidth = lineThickness.toFloat()
style = Paint.Style.STROKE
}
Upvotes: 0
Reputation: 48272
Drawing operations want Paint
. In this Paint
you set Paint.setFlags(Paint.ANTI_ALIAS_FLAG)
Upvotes: 91
Reputation: 1151
Check this out. It fairly uses smooth edges.. http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/FingerPaint.html
The paint properties needed to get anti-aliasing is :
mPaint = new Paint();
mPaint.setAntiAlias(true);
For drawing use:
mPath = new Path();
mPath.reset();
mPath.moveTo(x, y);//can be used where to trigger the path
onDraw method should contain:
canvas.drawPath(mPath, mPaint);
Declare the mPath and mPaint as global.
Upvotes: 30