1.3 プログラミング言語

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

 作図装置をナマで制御するプログラミング命令が、装置寄りのグラフィックス言語です。基本的な命令は、「画面を準備する・線を引く・点を打つ」の三種類です。画面の準備とは、デバイス座標を勘案して実効の作図領域(ビューポート)を定義すること、画面を新しくすること(消去)などです。線を引くのは、線の始点までペンを上げた状態で移動し、そこからペンを下ろして終点まで線を引くように移動させる一対の命令を使います。この場合、描かれる線の太さと色とは、概念的にはペンの種類を変えることに相当し、プログラミングの場合にはペンの属性(プロパティ)で定義します。点を打つのは、同じ場所でペンを上下させて点を作図させるのですが、ドット方式のグラフィックス装置では最も基本的な命令です。線を引く場合も幾何学的には点の並びで表します。

 円や矩形などの単純な図形は、基本的な命令の組み合わせで構成します。文字の表示はやや特殊になりますので、改めて下の段落で説明します。点線・破線などの線の種類は、間隔を空けた複数の線分で構成します。利用目的に合わせた種々のグラフィックスライブラリは、すべて基本的な命令から構成されますので、基本命令の部分だけをグラフィックス装置に合わせて取り替えれば、殆どのライブラリは変更無しに使うことができます。これがデバイスドライバの応用です。この章の最初のところでで紹介したCalcomp社のプロッタを利用するグラフィックス言語は、最も基本的な命令の集合であって、一つの標準言語を構成していました。線を作図させるときのCALL PLOTの形がそうです。CRT上に線を描く命令では、MOVE/DRAW の対で使うライブラリ(Plot-10)が普及していました。パソコンのグラフィックス命令ではLINE文が使われます。種々のグラフィックス言語を総合的に扱えるようにする標準化はISOが提案してはいるのですが、実用的に使える言語の段階では、まだかなりの問題が残されています。

 文字は図形の一種です。それを表示する方法が二種類あります。線図で描くのと、ドットの集合模様で表示させるのとであって、作図装置に合わせて表示方法が決まります。文字の母型、つまり印刷活字の一揃いをフォント(font)と言います。コンピュータで扱うフォントはグラフィックスデータの集合です。線図の集合としてのデータをベクトルフォント(vector font)、ドット模様として集めたデータをビットマップフォント(bitmapped font)と言います。後者の場合には、文字寸法系列(ポイント)ごとに準備しなければなりませんので、データ保存に多くのメモリが必要です。DOSのパソコンでは一種類の固定幅フォントしか使いませんが、CRTモニタ表示用とドットマトリックスプリンタ用の二種類が必要です。これは1文字当たりのドット密度が異なるためです。DOSのパソコンで利用するプリンタでは、プリンタ側で印刷用のフォントを準備し、文字コードを送って印刷させましたが、レーザプリンタなどを利用するときにはパソコン側で種々のフォントを準備します。

 モニタに文字並び(string)を表示する方法は、原理的には指定された場所に1文字単位のビットマップ模様を順に貼り付ける方式です。固定幅のフォントを使う場合には、1文字単位で位置を決められますが、プロポーショナルフォント(可変文字幅)では個々の文字位置が決まりません。OSが DOSから Windowsに変わって大きな影響を受けたことの一つが、文字の表示です。ビットマップフォントの文字表示は線を引く原理と異なりますので、これがキャラクタディスプレイとグラフィックスディスプレイの使い分けになります。文字と線図とを同じ画面で表示させる場合、文字と線図との相対的な位置関係で相性が悪いのはこのためです。文字も線図で描くと、他の線図との位置関係を意図したように満たすことができます。しかし、ベクトルフォントで文字を描く需要は、製図などのごく限られた専門分野ですので、通常のパソコンの環境ではサポートされていません。したがって、この表示方式は自前で準備しなければならないのです。

 VBでプログラミングをする環境では文字の表示方法がやや特殊です。キャラクタディスプレイとグラフィックスディスプレイの二種のモードがあると考えるとよいでしょう。文字は、書き出すウインドウを指定したPrint文で表示させるのですが、単純にPrint文を使うと、指定された行高さで改行されていって、ウインドウの下端を超えた部分は見えなくなってしまいます。これが基本的なキャラクタディスプレイモードです。グラフィックスディスプレイのモードとは、書き出し位置の指定をするのですが、これはその場限りで、再び元のキャラクタディスプレイのモードに戻ります。この相違を意識して文字表示のプログラミングをしなければなりません。


次のページ