2.3 座標系

目次のページ; 前のページ; 次のページ;

 線図形を描くときは、グラフィックスモニタを、あたかもプロッタのような独立した作図装置に見立てて、そこに図のデータで描き出します。VBでは、デスクトップ全体をScreenオブジェクトと言います。このプロパティで重要な数値はHeight/Widthであって、デスクトップ全体を画面領域とするときの縦横最大寸法を長さの単位twipで持っています。twipの語源は分かりませんが、印刷のポイント単位の20倍になっていて、1インチ当たり1440 twip です。モニタの画面寸法には種々ありますので、この値は個々のモニタに固有です。モニタの解像度を知るには、整数型のTwipsPerPixelX, TwipsPerPixelY プロパティを参照して求めることができます。

 VBのグラフィックスプログラミングでは、専用の作画用領域(フォーム)を少なくとも一つ使います。作画領域はWindowsの用語ではクライアント領域であって、タイトルバーやメニューバーなどを含みません。ステイタスバーやテキストボックスを載せると、その図形がフォームを隠しますので、フォーム上を直接の作画領域にしないで、画板に相当するオブジェクトであるピクチャーボックスやイメージを載せます。実質的な作画領域は、細かいことを言えば、外枠の線の幅だけ狭くなります。プレゼンテーションの目的で、モニタ全領域をグラフィックススクリーンとして使うこともできますが、通常の利用のときは、ウインドウ単位でモニタ画面を最大に占有する使い方をします。そうすると、作画の実質領域は、上端にタイトルバー下端にステイタスバーなどがつきますので、横縦4:3のアスペクト比よりも多少横長になります。

 キャラクタディスプレイの習慣を引き継いで、モニタ上のウインドウ図形を表すときの座標系の約束は、画面の左上を原点とし、X軸が右向き、Y軸が下向きを正に取ります。ウインドウの寸法はマウスなどを使って変更できますので、現在の寸法を知るためのプロパティは、フォームのHeightとWidthを参照します。画面上の論理座標は、このクライアント領域に、グラフィックスの方で言うWindow座標を割り付けます。これはグラフィックスの方の用語ではウインドウビューポート変換(Window-Viewport transformation)と言います。この寸法設定によって、実質的な座標軸の正負の向きと単位を決めますので、線図の作図の上下左右を反転させたり、縦横比を変えることができます。

 文字を表示する命令はPrint文です。このとき、あらかじめ文字の書き出し位置と文字寸法とを指定します。文字の座標を指定するときは、文字領域の左上を指定します。文字寸法単位は原則としてポイントが使われます。これは文字が納まる高さを指しますので、実際の文字高さはこれよりも小さくなります。DOSで標準として使う640×480ピクセルのモニタの場合、文字寸法にポイントではなく、英字1文字の領域として16×8ピクセルを割り当てます。これは、12型のモニタでは、大体12ポイントに相当します。英字は高さ1に対して幅0.5の寸法の領域を使いますが、漢字は縦横1:1の寸法領域を全角と言い、英字2字分を使います。文字位置を指定するときは、16×8ピクセル単位で区切った方眼数で数えた座標値で指定します。これがN88-BasicやQuick BasicのLOCATE文です。これに対して、VBでは、方眼座標の概念がなく、文字位置を指定するときはグラフィックス座標を使います。そして、グラフィックス座標の座標軸の正負の向きの定義に関係なく、文字は正位置で右書きで表示され、改行ではその下の行に移ります。文字並びが左書きに変更されたり、二行目が最初の行の上に移動する表示にはなりません。

 文字と図形とを同じ画面で表示させるとき、座標の定義の仕方が違いますので、この相違を理解しておかないと思った通りの表現が得られません。モニター上のウィンドウの寸法単位は、文字表示に便利なようにtwipを使っていますので、モニタの寸法が変わっても指定されたポイント数で文字表示を可能にしています。幾何学図形を表示させるとき、図形全体を相似に拡大または縮小させて、ウインドウの作画領域に最大に接する様に表示させることができます。このとき、図形寸法が変わっても文字寸法は変わりません。文字寸法も図形と相似に変わるようにするには、文字も線図で描かせるのが最善です。フォントのポイント系列を細かく選べれば、図形の寸法に合わせたポイント数を選ぶこともできます。しかし一般に、ポイント系列を細かく選べませんので、文字表示と線図形とをしっくりと合わせる表示はできません。文字を任意の傾きと大きさで表示させるには、Windows APIの助けを借りるなど、やや特殊なグラフィックス処理が必要になります。プレゼンテーションを目的とする場合には、図形と文字とを見栄えよく表示することも必要ですが、科学技術計算では、あまり表現方法のテクニックに凝る必要はないでしょう。


次のページ