EzGraph : Eazy Graphic Library

概要 チュートリアル 機能一覧 関数名一覧 機能別一覧 色見本 MMLの書き方

はじめに

EzGraphでは、XPM形式の画像を表示することができます。 XPM形式とは、テキストの画像フォーマットで、中身はC言語の 2次元文字配列型で表現されている。

XPMファイル

以下にXPMファイルの例を示す。

/* XPM */
static char *XPM_X[] = {
/* columns rows colors chars-per-pixel */
"16 16 2 1",
"  c red",
". c None",
/* pixels */
"................",
"................",
"..... ..... ....",
"...... ... .....",
"...... ... .....",
"....... . ......",
"........ .......",
"....... . ......",
"...... ... .....",
"...... ... .....",
"..... ..... ....",
"................",
"................",
"................",
"................",
"................"
};

このファイルは、縦16ドット、横16ドットの画像ファイルで中央に赤いXが 描かれている。XPM形式は透過色にも対応しているため、EzGraphで背景の 上にキャラクタ等を表示することも容易である。

XPM形式はテキストファイルなので、テキストエディタで作成する こともできるが、通常はGIMP(コマンド名はgimp)や XPaint(コマンド名はxpaint)を用いて作成する。また、既存の図を XPM形式に変換する場合は、ImageMagickのconvertコマンドを使う。

convert car.gif car.xpm

もし、元の図が透過色をサポートしていない場合は、"-transparent"オプションを 用いることで、特定の色を透過色に変更できる。例えば、元の画像の黒の画素を 透過させる場合は、以下のように実行する。"#"の後は、透過させたい画素の 色を2桁16進数でRGB(赤、緑、青)の順に指定する。

convert car.bmp -transparent #000000 car.xpm

なお、convertコマンドは、ファイル名に数字や記号が入っていた場合、 アンダースコアに変換される場合がある。そのため、変換するXPMの ファイル名には、アルファベットのみを用いるか、convertコマンド実行後に XPMファイルをテキストエディタで開いて編集する必要があるので注意すること。

XPMファイルの表示方法

前述の通り、XPMファイルはC言語の2次元文字配列型である。 EzGraphでXPMファイルを読み込む場合は、C言語のソースファイルの中に、
#include "car.xpm"
のようにしてXPMファイルをインクルードする。XPMファイルを表示する場合は、
  1. XPMデータをX11環境へ渡す、
  2. X11環境に取り込んだXPMデータを表示する
という2段階に分れる。なお、同じ画像を2度以上表示する場合は、 2の手順のみ行えば良い。以下に、コード例を示す。
 1: #include <EzGraph.h>
 2: #include "car.xpm"
 3:
 4: int main(){
 5:   EzImage img;
 6:
 7:   img = EzReadXPM(car);
 8:   EzPut(400, 100, img);
 9:   EzEventLoop();
10: }

まず、2行目でXPMファイルをインクルードする。5行目は、 X11環境に取り込んだXPMデータを識別するID用の変数である。 7行目で、EzReadXPM関数を用いてXPMデータであるcarを読み込み、X11環境に渡す。以降は、読み込んだ画像をimgという変数で差すことができる。 8行目は、EzPut関数を用いて表示する部分である。

car.xpmの変数名とEzPut関数に渡す引数の部分を一致させることに注意すること。

チュートリアルの目次

  1. 初歩的な使い方
  2. 複雑な図形描写
  3. イベントドリブン
  4. ダブルバッファリング
  5. 画像ファイルの表示
  6. リアルタイムなキー入力
  7. ネットワーク機能

Takahiro SASAKI
E-mail: sasaki at arch.info.mie-u.ac.jp