右詰で文字列を描画する
Top > Tips > etc

 文字を描画するには、 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 新規作成