gpt4 book ai didi

java - 如何改变 Android Canvas.drawTextOnPath() 的输出

转载 作者:搜寻专家 更新时间:2023-11-01 08:55:48 28 4
gpt4 key购买 nike

我是 Android 新手,我编写了以下示例代码。

public class Circle extends View {
Paint paint = new Paint();
Path path = new Path();
private static final String s = "Hello world example";

public Circle(Context context) {
super(context);
paint.setColor(Color.BLACK);
paint.setStyle(Style.STROKE);
paint.setStrokeWidth(2);
paint.setAntiAlias(true);
paint.setTextSize(30);
}

public void onDraw(Canvas c) {
path.addCircle(getWidth()/2, getHeight()/2, 180, Direction.CW);
c.drawTextOnPath(s, path, 0, 10, paint);
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}

}

Canvas.drawTextOnPath() 显示从右侧开始的文本(我的意思是正 X 轴)。我想从顶部顺时针显示文本。我想更改文本的起始位置。我对 Android Canvas.translate()Canvas.scale() 感到困惑。或者我应该使用 Canvas.rotate()?我粘贴了下面的输出以便清楚地理解我的问题。 enter image description here

我想以这种形式显示输出。

enter image description here

最佳答案

我终于解决了我的 Canvas 问题,方法是在应用之前在我的代码中添加 Canvas.rotate(float degrees, float px, float py) Canvas 方法。下面是代码。

public class Circle extends View {
Paint paint = new Paint();
Path path = new Path();
private static final String s = "Hello world example";

public Circle(Context context) {
super(context);
paint.setColor(Color.BLACK);
paint.setStyle(Style.STROKE);
paint.setStrokeWidth(2);
paint.setAntiAlias(true);
paint.setTextSize(30);
}

public void onDraw(Canvas c) {
c.rotate(-90, getWidth()/2, getHeight()/2);
path.addCircle(getWidth()/2, getHeight()/2, 180, Direction.CW);
c.drawTextOnPath(s, path, 0, 10, paint);
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
}

我之前尝试过 Canvas.rotate(float degrees) 但没有成功。但是,Canvas.rotate(float degrees, float px, float py) 起作用了!

关于java - 如何改变 Android Canvas.drawTextOnPath() 的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19043452/

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