You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将字符串旋转90度?旋转代码无显示问题求助

解决字符串旋转90度后不显示的问题

我需要将字符串旋转90度,但当前代码执行后无内容显示,移除旋转代码后字符串正常显示。原代码如下:

Transform transform = g.getTransform();
g.rotateRadians(1.571f);  //90 degree
x = getX();
y = getY();
g.drawString("Title",x,y);
g.setTransform(transform);

问题原因

图形上下文的旋转默认以**坐标系原点(通常为画布左上角)**为中心,直接执行旋转后,原绘制位置(x,y)会被旋转到可视区域之外,导致看不到字符串。

解决方案

调整变换顺序,先将坐标系平移到目标绘制位置,再执行旋转,最后根据旋转后的坐标系调整字符串的绘制坐标,确保内容出现在可视区域内。修改后的代码如下:

Transform transform = g.getTransform();
// 平移坐标系到目标绘制位置
g.translate(getX(), getY());
// 旋转90度(π/2弧度)
g.rotateRadians(1.571f);
// 获取字符串宽度,用于调整绘制坐标
FontMetrics metrics = g.getFontMetrics();
int stringWidth = metrics.stringWidth("Title");
// 旋转后坐标系方向改变,调整坐标让字符串从目标位置垂直显示
g.drawString("Title", -stringWidth, 0);
// 恢复原始变换
g.setTransform(transform);

代码说明

  • translate(getX(), getY()):将坐标系原点移到目标绘制位置,让旋转围绕该点进行。
  • rotateRadians(1.571f):执行90度旋转。
  • 调整drawString的坐标为(-stringWidth, 0):因为旋转90度后,原字符串的宽度方向变为垂直方向,向左偏移字符串宽度,能让字符串从目标位置开始向上垂直显示,匹配预期效果。

内容的提问来源于stack exchange,提问作者Daniel Tsai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 12:47:11