Code Aquarium

minazoko's blog -*- 水底のブログ -*-

(Racket) draw-text における文字回転

draw-textによる縦書きは、文字列を分割して一文字ずつ置いていくのが簡単です。ただしカタカナの長音記号は横棒のままになっていますので、文字を回転して描画します。

  • 回転したい文字の中心に座標原点を移動 (set-origin)
  • さらに座標系の回転(rotate)
  • そして文字を描画(draw-text)
  • その後座標系を元に戻す

予め get-transformation で座標系の状態を取得しておき、回転描画が終わった後に元の状態に戻します (set-transformation)。
そうすることで以降の処理は通常通りの座標系で描画を再開することが可能となります。

なお、割と綺麗に見えるフォントを使っていますが、フォントによっては縦棒の位置がぴったり収まらないこともあるようです。
f:id:minazoko:20141214005124p:plain:h200:right

draw-text における文字回転の例