----------------------------------------------------- 簡単グラフィックライブラリ関数 ver.1.2 for Visual C++ 4.x/5.x "eglib.h" リファレンス・マニュアル by I.N. 2000/11/8 ----------------------------------------------------- 0.はじめに  このライブラリ関数はWindows95/98/Me/NT4.0/2000が動作するパソコン上で誰でも手軽にグラフィックスを描画できるように用意したものです.言語はMicrosoft Visual C++ 4.x/5.x/6.xを使います.描画ウィンドウのサイズは640x480です.カラーパレットは256色モードでも動作しますが,16ビット,24ビットまたは32ビットモードの方がより忠実に色を再現します. 1.使い方 1.1 インストール方法 ・Visual C++ 4.xの場合  Visual C++ 4.0 が \MSDEVSTD フォルダにインストールされている場合を例にとると, \MSDEVSTD\include の中に eglib.h をコピーしてください.一度インストールすれば,次回からはこのインストールは必要ありません. ・Visual C++ 5.xの場合 Visual C++ 5.0 が \DevStudio フォルダにインストールされている場合を例にとると, \DevStudio\Vc\include フォルダの中に eglib.h をコピーしてください.一度インストールすれば,次回からはこのインストールは必要ありません. ・Visual C++ 6.xの場合 Visual C++ 6.0 が \Program Files\Microsoft Visual Studio\ フォルダにインストールされている場合を例にとると, \Program Files\Microsoft Visual Studio\Vc98\Include フォルダの中に eglib.h をコピーしてください.一度インストールすれば,次回からはこのインストールは必要ありません. 1.2 アンインストール方法  EGLIBをアンインストールするときは,eglib.hファイルを削除して下さい. 1.3 手順 初心者は以下の手順に従い,使い方を理解してください. ・Visual C++ 4.x の場合 a) Visual C++ 4.x を起動する b) 「ファイル」→「新規作成」→「プロジェクトワークスペース」 c) タイプは「Application」,プロジェクトネームは適当に.例 GTEST など. d) 「ファイル」→「新規作成」→「テキストファイル」 e) GraphMain関数を含むプログラムを書く(1.3 参照) f) 「ファイル」→「名前を付けて保存」で保存する.拡張子は".C"にすること.例 WinMain.c g) 「挿入」→「プロジェクトへファイルを追加」で WinMain.c(←例)を追加する h) 「ビルド」→「ビルド」でコンパイル&リンクする i) 「ビルド」→「実行」で実行し,結果を確認する j) 実行中のグラフィックウィンドウを閉じる k) 「ファイル」→「ワークスペースを閉じる」→「はい」 l) Visual C++ を終了する ***** Visual C++ 4.x をよく知らない人への注意事項 ***** ※1 次回からはVisual C++ 4.x を起動したあと,    「ファイル」→「ワークスペースを開く」でGTEST\gtest.mdp(←例)を指定すればよい ※2 WinMain.c(←例)という名前でプロジェクトに追加したあとは,    勝手にWinMain2.c(←例)などと名前だけを変更することはできない.    WinMain.c(←例)の内容は修正してもよいが,ファイル名は最後まで変更しないこと.    新しいプログラムを作るときは,プロジェクトワークスペースの新規作成から行う.     ※3 プログラムを実行したあとは,その実行中のウィンドウを必ず閉じること.    閉じずにプログラムを修正し,ビルドや実行することはできない. ・Visual C++ 5.x の場合 a) Visual C++ 5.x を起動する b) 「ファイル」→「新規作成」,「プロジェクト」タグ→「Win32 Application」を選択. c) プロジェクト名は適当に.例 GTEST など. d) 「ファイル」→「新規作成」,「ファイル」タグ→「C++ ソースファイル」を選択.     e) ファイル名は適当に.例 gtest.c 注意)拡張子は".C"にすること. f) GraphMain関数を含むプログラムを書く(1.3 参照) g) 「ビルド」→「ビルド」でコンパイル&リンクする h) 「ビルド」→「実行」で実行し,結果を確認する i) 実行中のグラフィックウィンドウを閉じる j) 「ファイル」→「ワークスペースを閉じる」→「はい」 k) Visual C++ を終了する ***** Visual C++ 5.x をよく知らない人への注意事項 ***** ※1 次回からはVisual C++ を起動したあと,    「ファイル」→「ワークスペースを開く」でGTEST\gtest.dsw(←例)を指定すればよい ※2 gtest.c(←例)という名前でプロジェクトに登録されているため,    勝手に gtest2.c(←例)などと名前だけを変更することはできない.    gtest.c(←例)の内容は修正してもよいが,ファイル名は最後まで変更しないこと.    新しいプログラムを作るときは,プロジェクトワークスペースの新規作成から行う.     ※3 プログラムを実行したあとは,その実行中のウィンドウを必ず閉じること.    閉じずにプログラムを修正し,ビルドや実行をすることはできない. 1.4 サンプルプログラム   // 画面の左上から右下にかけて黄色で直線を描くサンプルプログラム // また,緑色で文字も描き,ランダムな位置に円を描く #include // 関数ライブラリのインクルード void GraphMain(void) // 関数名 GraphMain は変えられない { // 以下は自由にプログラムを書けばよい int color,x,y; color=EG_RGB(255,255,0); EG_line(0,0,639,479,color); EG_text("Sample program.",320,30,EG_RGB(0,255,0)); x=random(640); y=random(480); EG_circlef(x,y,40,color,RGB(255,100,200)); } 2.関数リファレンス 2.0 引数の範囲  X座標,Y座標の範囲はそれぞれ 0〜639,0〜479です.ウィンドウ画面からはみ出る部分についての描画は行われません.  色の範囲は 0〜16777215(0xbbggrr)ですが,EG_RGB(r,g,b)関数を使って色を指定するとよいでしょう. 2.1 void EG_pset(int x, int y, int color); 点を描画する int x X座標 int y Y座標 int color 色 2.2 int EG_point(int x, int y); 色情報を取得する int x X座標 int y Y座標 戻り値 色 2.3 void EG_line(int x1, int y1, int x2, int y2, int color); 直線を描画する int x1 始点X座標 int y1 始点Y座標 int x2 終点X座標 int y2 終点Y座標 int color 色 2.4 void EG_box(int x1, int y1, int x2, int y2, int color); ボックスを描画する int x1 始点X座標 int y1 始点Y座標 int x2 終点X座標 int y2 終点Y座標 int color 色 2.5 void EG_boxf(int x1, int y1, int x2, int y2, int color1, int color2); ボックス(塗りつぶし)を描画する int x1 始点X座標 int y1 始点Y座標 int x2 終点X座標 int y2 終点Y座標 int color1 外枠色 int color2 内部色 2.6 void EG_boxr(int x1, int y1, int x2, int y2, int wx, int wy, int color); 角が丸いボックスを描画する int x1 始点X座標 int y1 始点Y座標 int x2 終点X座標 int y2 終点Y座標 int wx 丸い角を描画するための楕円の横幅 int wy 丸い角を描画するための楕円の縦幅 int color 色 2.7 void EG_boxrf(int x1, int y1, int x2, int y2, int wx, int wy, int color1, int color2); 角が丸いボックスを描画する int x1 始点X座標 int y1 始点Y座標 int x2 終点X座標 int y2 終点Y座標 int wx 丸い角を描画するための楕円の横幅 int wy 丸い角を描画するための楕円の縦幅 int color1 外枠色 int color2 内部色 2.8 void EG_circle(int x, int y, int r, int color); 円を描画する int x 中心X座標 int y 中心Y座標 int r 半径 int color 色 2.9 void EG_circlef(int x, int y, int r, int color1, int color2); 円(塗りつぶし)を描画する int x 中心X座標 int y 中心Y座標 int r 半径 int color1 線の色 int color2 内部色 2.10 void EG_ellipse(int x1,int y1,int x2,int y2,int color); ボックスに内接する楕円を描画する int x1 ボックス左上X座標 int y1 ボックス左上Y座標 int x2 ボックス右下X座標 int y2 ボックス右下Y座標 int color 色 2.11 void EG_arc(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int color); ボックスに内接する楕円(一部)を描画する int x1 ボックス左上X座標 int y1 ボックス左上Y座標 int x2 ボックス右下X座標 int y2 ボックス右下Y座標 int x3 始点座標は int y3 「楕円の中心と(x3,y3)を結ぶ直線」と「楕円」の交点 int x4 終点座標は int y4 「楕円の中心と(x4,y4)を結ぶ直線」と「楕円」の交点 int color 色 2.12 void EG_text(char *str, int x, int y, int color); 文字列の描画 char *str 文字列へのポインタ int x 始点X座標 int y 始点Y座標 int color 色 2.13 void EG_copyimage(int x1, int y1, int wx, int wy, int x2, int y2); 矩形領域の高速コピー int x1 転送元始点X座標 int y1 転送元始点Y座標 int wx イメージの横サイズ int wy イメージの縦サイズ int x1 転送先始点X座標 int y1 転送先始点Y座標 2.14 int random(int n); 0〜(n-1)までの間で乱数(整数値)を得る int n 範囲 戻り値 乱数値 2.15 int EG_RGB(int r, int g, int b); 色コードを得る int r 赤成分(0-255) int g 緑成分(0-255) int b 青成分(0-255) 戻り値 色コード (0xbbggrr) 2.16 int EG_BMPload(char *filename, int x, int y); BMPファイルを読み込み描画する (1/4/8/24ビットパレットに対応) char *filename BMPファイル名 (拡張子は省略の有無に関わらず強制的に.BMPとなる) int x 描画開始左上X座標 int y 描画開始左上Y座標 戻り値 正常終了0,異常終了1 2.17 int EG_BMPsave(char *filename, int x, int y, int wx, int wy); 指定した範囲をBMPファイルとして保存する (作成されるBMPファイルは24ビットパレットのみ) char *filename BMPファイル名 (拡張子は省略の有無に関わらず強制的に.BMPとなる) int x 範囲左上X座標 int y 範囲左上Y座標 int wx 範囲の横幅 int wy 範囲の縦幅 戻り値 正常終了0,異常終了1 End of file.