TSXTextWriter

タスク

 TSXTextWriterオブジェクトは、TDGTextureオブジェクトに対して文字列を書き込んだり、文字列を書き込んだTDGTextureオブジェクトを生成します。

 

 TSXTextwriterの原理についてですが、

  1. 独自のフォントキャッシュを備えており、フォントキャッシュより文字のラスタイメージを取得
    キャッシュに無い場合は、GetGlyphOutline Win32APIによってラスタイメージを構築し、キャッシュに入れる
  2. ラスタイメージをテクスチャに転送する
    このラスタイメージは、対象となるテクスチャのフォーマットに合わせて構築され、RGBチャンネルは白(255,255,255)一色で塗りつぶし、Aチャンネルに不透明度を格納してある

 としています。つまり、以下の点を留意してTSXTextwriterによって文字列を描きいれるテクスチャを運用しなければなりません。

 

リファレンス目次

プロパティ

フォント Font
アンチエイリアシング AntiAliasing

 

メソッド

コンストラクタ Create
デストラクタ Destroy
描画 Write
CreateStringTexture
情報 TextWidth
TextHeight

 

リファレンス〜プロパティ

AntiAliasing

AntiAliasing : Boolean;

 Trueを指定すると、以降の文字の描画について、文字のアンチエイリアシング(文字の輪郭に出るギザギザの除去)を行います。

 デフォルトではTrueです。

 実行時に値を書き換えると、TSXTextwriterオブジェクトが内部で管理しているフォントキャッシュの内容が消去されるため、頻繁に変更するとパフォーマンスに悪影響を及ぼすので注意してください。

 

Font

Font : TFont;

 文字列を書き入れるのに用いるフォントを示します。

 

リファレンス〜メソッド

Create

constructor Create(ADG:TDGCarad; format; format:D3DFORMAT; cacheSize:Integer = 16);

 TSXTextWriterオブジェクトを生成します。

 ADGには、使用するTDGCaradコンポーネントを指定します。

 formatには、文字列を書き込む対象となるテクスチャのピクセルフォーマットを指定します。

 cacheSizeには、文字列キャッシュのサイズを指定します。最大で256 * cacheSize個の文字がキャッシュされます。


Destroy

destructor Destroy;

 TSXTextWriterオブジェクトを解放します。


Write

procedure Write(x,y:Integer; str:String; Target:TDGTexture);

 Targetで示されるテクスチャ上のx , y で示される位置を左上隅に取って、文字列strを書き入れます。

 Font.Colorプロパティは文字列を書き入れる際に無視され、常にRGB値は白(255,255,255)でα値に不透明度のみが書き込まれます。

 

CreateStringTexture

function CreateStringTexture(str:String; fmt:Array of D3DFORMAT; debugStr:String = ''):TDGTexture;

 文字列strを書き入れたテクスチャを生成して、返り値に設定します。

 fmtはテクスチャのフォーマットを第一希望から並べたものです。必ずαチャンネルの付いたテクスチャを作れるようにしてください。

 debugStrには、デバッグログに出力される、テクスチャの識別名を指定します。アプリケーションの実行自体には直接影響を与えません。

 

TextWidth
TextHeight

function TextWidth(str:String):Integer

function TextHeight(str:String):Integer

 文字列strがテクスチャ上でどれだけの幅、高さを占めるかを返します。