所以我用以下代码绘制了一个圆圈
public void drawCircle(int radius, ImageView imageView)
{
Paint circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
circlePaint.setStrokeWidth(1);
circlePaint.setColor(Color.RED);
circlePaint.setStyle(Paint.Style.FILL_AND_STROKE);
circlePaint.setAntiAlias(true);
Bitmap circleBitmap = Bitmap.createBitmap(radius*2, radius*2, Bitmap.Config.ARGB_4444);
Canvas circleCanvas = new Canvas(circleBitmap);
circleCanvas.drawCircle(radius, radius, radius, circlePaint);
//canvas.drawColor(Color.WHITE); used on the picture to the right
imageView.setImageBitmap(circleBitmap);
}
这将在我的屏幕上绘制以下圈子
您可能会看到圆圈的顶部,底部,左侧和右侧部分略微被切掉 . 将位图的背景颜色设置为白色显示了罪魁祸首 . 绘制的圆与位图的宽度和高度的半径相同,略大于位图 .
为了确保这是正在发生的事情,我尝试绘制相同大小的圆,但我将位图的大小增加了大约5%并将圆圈置于其中心 . 这给了我以下内容:
您可能会看到这些圈子与前一个圈子没有相同的截止值 .
这是预期的行为吗?如果我想绘制大小为x的正确圆圈,那么我是否总是需要创建大小> x的位图然后将圆圈正确居中?
1 回答
所以我想出了为什么会这样 . 实际上非常简单 .
行程被添加到圆的半径外部 . 因此, Radius = 10px 和 Stroke = 2px 的圆的绘制半径为 12px ,但仍被视为半径为10px的圆 .
在这种情况下,可以通过简单地设置Paint属性来修复它: