这就是我绘制弧线的方式......
第一张图片显示目前它在画布上的绘制总是LEFT TOP角落我想要达到 它的任何一个角落的画布示例第二张图片RIGHT | BOTTOM
public void onDraw(Canvas canvas) {
if(first == null)
first = new RectF();
if(second == null)
second = new RectF();
if(p == null)
p = new Path();
canvas.drawColor(Color.TRANSPARENT);
paint.reset();
paint.setAntiAlias(true);
float _X, _Y, radius, innerRadius;
path.reset();
float currentAngle =90;
float currentSweep;
float padding = 0;
_X = 150;//getWidth();
_Y = 150;//getHeight();
if (_X < _Y) {
radius = _X;
} else {
radius = _Y;
}
radius -= padding;
innerRadius = radius - thickness;
first.set(_X - radius, _Y - radius, _X + radius, _Y + radius);
second.set(_X - innerRadius, _Y - innerRadius, _X + innerRadius, _Y + innerRadius);
paint.setColor(Color.GREEN);
currentSweep = 270;
p.arcTo(first, currentAngle + padding, currentSweep - padding);
p.arcTo(second, (currentAngle + padding) + (currentSweep - padding), -(currentSweep - padding));
canvas.drawPath(p, paint);
p.close();
}
但它总是在LEFT TOP角落中绘制,我如何将其更改为CENTER和画布的任何角落。我希望能够灵活地在Canvas中的任何位置更改弧的位置。
请帮忙。
答案 0 :(得分:1)
更改_X
&amp; _Y
变量。
我不明白为什么你需要这个
if (_X < _Y) {
radius = _X;
} else {
radius = _Y;
}
但是如果您只需要半径恒定的弧,则不需要上面的代码。
然后,您可以使用
之类的内容轻松定位//For bottom right
_X = getWidth() - radius;
_Y = getHeight() - radius;
//For top right
_X = getWidth() - radius;
_Y = radius;
//For bottom left
_X = radius;
_Y = getHeight() - radius;
//For center
_X = getWidth() / 2;
_Y = getHeight() / 2;