gpt4 book ai didi

android - 在 android canvas 上绘制有角度的矩形/圆弧

转载 作者:行者123 更新时间:2023-11-30 04:10:38 25 4
gpt4 key购买 nike

我正在尝试为 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);
}

最佳答案

我假设您正在尝试从中心到接触点绘制一个矩形?

看看 Canvas.save/restore。一些伪代码:

canvas.save()

canvas.rotate(angleOfRectangle)

canvas.drawRectangle(size)

canvas.restore()

想法是保存当前 Canvas 状态,旋转整个 Canvas ,绘制矩形,然后恢复 Canvas 状态以“忘记”旋转。

[编辑]

感谢马特的更正。

希望对你有帮助

关于android - 在 android canvas 上绘制有角度的矩形/圆弧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10908599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com