Я пытаюсь изменить компонент джойстика для устройства Android. В настоящее время компонент способен отслеживать положение x и y вашего пальца и нарисовать небольшой круг. Теперь то, что я хочу сделать, это нарисовать прямоугольник или дугу от центра до положения x и y вашего пальца.Рисование угловых прямоугольников/дуг на андроидном холсте
Насколько я знаю, прямоугольник принимает только верхние, левые, правые и нижние значения, что позволяет мне рисовать прямоугольники горизонтально или вертикально. Если кто-то знает другой способ сделать это, это будет фантастично.
Мне удалось получить прямой прямоугольник, используя canvas.drawLine, однако теперь я хочу, чтобы прямоугольник изогнулся с использованием функции drawArc, однако он принимает аргумент RectF.
Мой код, который я в настоящее время использую это:
@Override
protected void onDraw(Canvas canvas) {
int centerX = (getWidth())/2;
int centerY = (getHeight())/2;
Paint p = new Paint();
p.setColor(buttonColor);
RadialGradient gradient = new RadialGradient(centerX, centerY, joystickRadius,
backgroundColor,circleColor, android.graphics.Shader.TileMode.CLAMP);
//draw an outer circle
p.setDither(true);
p.setShader(gradient);
canvas.drawCircle((int) centerX, (int) centerY, joystickRadius, p);
p.setShader(null);
p.setColor(buttonColor);
p.setStyle(Paint.Style.FILL);
//draw the joystick thumbpad
canvas.drawCircle(x, y, buttonRadius, p);
// draw a line from the centre of outer circle to the center of the
// thumbpad. I want this to be a curved rectangle instead.
canvas.drawLine(centerX, centerY, x, y, p);
}
Могут ли вы объяснить, что вы имеете в виду под «изогнутым прямоугольником»? вы пытаетесь нарисовать Rounded прямоугольника? Или вам нужна какая-то дуга от точки к точке. – cemulate
Я искал способ сделать круглый прямоугольник, теперь, когда я думаю об этом. Я изначально думал, что это будет одно и то же, извините за путаницу. – Andrew