如何旋转文本字符串?

问题描述 投票:0回答:1

如何将绳子旋转 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度

我想要什么

codenameone
1个回答
0
投票

根据代码和屏幕截图,当您从屏幕左上角旋转到左侧时,您似乎正在将文本旋转到屏幕边界之外。

另一个问题是裁剪边界,即使你通过平移解决了旋转问题,这也不是那么简单。组件被剪裁,因此您不会意外地在其边界之外进行绘制。

您需要做的是创建一个在屏幕右侧足够高的组件(例如边框布局

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();

产生:

© www.soinside.com 2019 - 2024. All rights reserved.