文字を描画するには、 WinDrawChars関数を使用しますが、 描画の基準点が左上であるため、右詰めの文字列を描画したい場合に問題があります。
Palmの英字フォントはプロポーショナルフォント(文字幅が一定ではないフォント。iが狭くwが広い)なので、 桁をそろえても、描画される幅が一定にはなりません。
こういう時のためにFntCharsWidth関数が用意されています。 この関数は、指定した文字列を描画すると横幅が何dotになるかを返します。
この関数を使って、描画の基準点を右上にした描画関数を作ります。
/* 文字列を右上基準で描画する */ void DrawTextAlignRight( const CharPtr str, /* I:描画文字列 */ Coord x, /* I:描画X座標 */ Coord y) /* I:描画Y座標 */ { UInt16 len; Int16 width; len = StrLen(str); width = FntCharsWidth(str, len); WinDrawChars(str, len, x - width, y); } |
実行サンプル画面
'04/11/27 新規作成
Copyright (c) 2004 kasa0 All rights reserved.