方法很简单,关键就是参数的设置。具体代码如下:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.geom.AffineTransform;
import sun.java2d.SunGraphics2D;
@SuppressWarnings("serial")
public class RotateFontFrame extends JFrame
{
private final static String TAISHAN = "泰山Office";
private final static char[] TAISHANC = TAISHAN.toCharArray();
private final static int startX = 200;
private final static int startY = 200;
AffineTransform transform90 = AffineTransform.getRotateInstance(Math.PI / 2, 0, 0);
AffineTransform transform0 = AffineTransform.getRotateInstance( 0);
public RotateFontFrame()
{
super();
this.getContentPane().setBackground(Color.WHITE);
}
@Override
public void paint(Graphics g)
{
super.paint(g);
SunGraphics2D sg2d = (SunGraphics2D)g;
sg2d.setColor(Color.RED);
//旋转90度。这个语句的参数是关键。
transform90.setToRotation(Math.PI / 2, startX, startY);
sg2d.setTransform(transform90);
sg2d.fillRect(startX, startY, 100, 20);
sg2d.drawChars(TAISHANC, 0, TAISHANC.length, startX, startY);
//设置0度,取消旋转。
sg2d.setTransform(transform0);
sg2d.fillRect(startX, startY, 100, 20);
sg2d.drawChars(TAISHANC, 0, TAISHANC.length, startX, startY);
}
public static void main(String[] args)
{
RotateFontFrame frame = new RotateFontFrame();
frame.setSize(1000, 600);
frame.setVisible(true);
}
}