我正在尝试修改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);
}
答案 0 :(得分:1)
我假设您正在尝试从中心到接触点绘制一个矩形?
看看Canvas.save/restore。一些伪代码:
canvas.save()
canvas.rotate(angleOfRectangle)
canvas.drawRectangle(size)
canvas.restore()
我们的想法是保存当前画布状态,旋转整个画布,绘制矩形,然后将画布状态恢复为“忘记”旋转“。
[编辑]
感谢Matt的纠正。
希望它有所帮助...