如何将绳子旋转 90 度?代码不起作用。
Transform transform = g.getTransform();
g.rotateRadians(1.571f); //90 degree
x = getX();
y = getY();
g.drawString("Title",x,y);
g.setTransform(transform);
不显示任何内容(空)
删除g.rotateRadians(1.571f); //90度
我想要什么
根据代码和屏幕截图,当您从屏幕左上角旋转到左侧时,您似乎正在将文本旋转到屏幕边界之外。
另一个问题是裁剪边界,即使你通过平移解决了旋转问题,这也不是那么简单。组件被剪裁,因此您不会意外地在其边界之外进行绘制。
您需要做的是创建一个在屏幕右侧足够高的组件(例如边框布局
EAST
),然后旋转和平移它。
由于坐标点位于左上角,垂直绘制时坐标会发生变化。您需要旋转的枢轴点围绕组件的右侧区域旋转,而不是文本通常开始的左侧区域。
参见:
Form hi = new Form("", new BorderLayout());
Label title = new Label("Title") {
@Override
public void paint(Graphics g) {
int x = getX() + getPreferredH() - getUnselectedStyle().getHorizontalPadding();
g.translate(x, getY());
g.rotateRadians(1.571f);
g.setColor(getUnselectedStyle().getFgColor());
g.setFont(getUnselectedStyle().getFont());
g.drawString(getText(), 0, 0);
g.rotateRadians(-1.571f);
g.translate(-x, -getY());
}
};
hi.add(BorderLayout.EAST, title);
hi.show();
产生: