ここでは文字を書く例を示す. 文字の位置は通常「文字列の中心」の座標で指定する. 指定した文字の座標と 実際に描画される文字の位置関係をわかりやすくするために, 補助線を引いてその交点の座標を指定して文字を出力している.
正規座標系で文字を出力するにはDclDrawTextNormalizedを使う. まず, ここで注意すべきことは, 文字列の中心が指定した座標になるように出力されることである. これは後述のパラメータで変更可能である. また, 文字の高さはデフォルトで0.05であり, 文字のピッチもそれに等しい.
細かいことであるが, ここでいう文字の高さとは, すべての文字を入れることができる正方形の高さである. つまり, 小文字の g 等の様にベースラインよりも下に伸びる文字もあるので, 大文字を書いた場合には下に少し余白が残ることになる. そのために, 実際の文字の高さは大文字では0.05よりも少し(12-13 %)小さく, また, 文字の中心(文字位置を指定する座標)も大文字の実際の中心よりも 心持ち下になる.
文字のインデクスを変えるには index オプションを使う(2段目). また, 文字の大きさは height オプションによって変えることができる(3段目).
初期状態ではDclDrawTextNormalizedで指定する位置は, 文字列の中心の座標であるが, 文字列の左端の座標や, 右端の座標で指定することもできる. この指定を変えるには, centering オプションを使う(4段目). 文字列を回転させるためには rotate オプションを 用いて指定した位置を中心に反時計回りの角度を指定する(5段目).
DCLでは何も指定しなければ文字のピッチは文字の高さと同じになっているが, DclSetParmでENABLE_PROPORTIONAL_FONT を.true.にすれば, 文字のピッチを文字の幅にあわせる (プロポーショナルフォントの扱いにする)ことができる(7段目).
またDCLは2種類のフォントを持っており, DclSetParmで内部変数IFONTを2とすることによって, フォント番号2の高品位フォントを出力することができる(8段目). この例を見ればわかるように, 高品位フォントは複数の線を引くことで, 線の太さを調節しているため, ラインインデクスで線の太さを変えられる出力装置の場合には, 太い線を指定すると空白が潰れてそれらしい文字になる. また, 当然のことながら高品位フォントを使うと出力量が増えるので, 出力に時間がかかるようになる.
また普通のアルファベットだけでなく, ギリシャ文字や特殊記号のフォントも出力することができる(9段目). これらを出力するには, Fortran90の組み込み関数ACHARを用いて 文字番号を文字に変換し, それをテキストとしてDclDrawText等に渡せばよい. ACHARは ASCII コードを使用する計算機では CHAR関数と同値であり,これを使っても同じ結果が得られるが, EBCDIC コードを使用する計算機ではCHAR関数で正しい文字が得られない. 従って, ACHARを使って文字コードを指定しておけば, どちらのコードを使用する計算機であっても正しい結果が得られる. 文字番号に関しては付表を参照のこと.
ユーザー座標系空間での文字の描画にはDclDrawTextを使う. ユーザー座標系での文字の描画も基本的には正規座標系空間での描画と同じであるが, 文字の大きさは正規座標系で指定するので, ビューポートの大きさが変わっても文字の大きさは変わらないという点が, 線分描画の場合と異なる. クリッピングに関しては文字は線画図形と同じで, DclSetParmを用い内部変数 ENABLE_CLIPPINGを.TRUE.とした指定が文字に対しても適用される.
program text use dcl call DclOpenGraphics call DclNewFrame do i=1,9 call DclDrawLineNormalized( (/0.1,0.9/), (/0.1*i,0.1*i/) ) end do call DclDrawLineNormalized( (/0.5,0.5/), (/0.05,0.95/), type=3 ) ! 1段目 call DclDrawTextNormalized(0.5,0.9,'Test') ! 2段目 call DclDrawTextNormalized(0.5,0.8,'index3',index=3) ! index 設定 ! 3段目 call DclDrawTextNormalized(0.5,0.7,'SMALL',height=0.03) ! size 設定 (小) ! 4段目 call DclDrawTextNormalized(0.5,0.6,'Left',centering=-1) ! 左揃え ! 5段目 call DclDrawTextNormalized(0.5,0.5,'Rotate',angle=20.) ! 回転 ! 6段目 call DclDrawTextNormalized(0.5,0.4,'ABC|sup"XYZ_sub"') ! 上付・下付 ! 7段目 call DclSetParm('ENABLE_PROPORTIONAL_FONT',.true.)!プロポーショナルフォント call DclDrawTextNormalized(0.5,0.3,'Proportional',index=2) ! 8段目 call DclSetParm('IFONT',2) call DclDrawTextNormalized(0.5,0.2,'Font2',index=2) ! 高品位フォント ! 9段目 call DclDrawTextNormalized(0.5,0.1, & & achar(152)//achar(153)//achar(154)// & ! ギリシャ小文字 & achar(145)//achar(151)//achar(148)// & ! ギリシャ大文字 & achar(189)//achar(217)//achar(218) ) ! 記号 call DclCloseGraphics end program |
|
DclDrawText (SGTXU,SGTXZU) |
ユーザー座標系で文字列を描く. |
DclDrawTextNormalized (SGTXV,SGTXZV) |
正規座標系で文字列を描く. |
DclDrawTextProjected (SGTXR,SGTXZR) |
透視座標系で文字列を描く. |
DclSetTextHeight (SGSTXS) |
文字の高さを設定する. |
DclSetTextAngle (SGSTXR) |
文字列の角度を設定する. |
DclSetTextIndex (SGSTXI) |
文字列のラインインデクスを設定する. |
DclSetTextPosition (SGSTXC) |
文字列のセンタリングオプションを設定する. |
* 括弧の中は、対応するf77インターフェイス名.