Graphics2D g2d;
// 文字を中央に表示(拡大・回転)
public void drawStringCenterScale(String str, int x, int y, double sx, double sy, double angle) {
AffineTransform save_at = g2d.getTransform(); // 現在のTransformを待避
AffineTransform at = new AffineTransform(); // 新しいAffineTransformを作成
FontMetrics fm = g2d.getFontMetrics();
// 後指定優先適用
at.translate(x, y); // 平行移動
at.rotate(angle, 0, 0); // 回転
at.scale(sx, sy); // 拡大
at.translate(- fm.stringWidth(str) / 2, fm.getAscent() - fm.getHeight() / 2);// 平行移動(原点へ)
g2d.transform(at); // Transformをセット
g2d.drawString(str, 0, 0);
g2d.setTransform(save_at); // 元のTransformを復帰
}
|