Visual C++で作成した画像をViSaGeに表示する
Displaying an Image by Visual C++ on ViSaGe System
Visual C++で作成した画像ファイルをViSaGeで表示した。画像はビットマップファイルとして作成するため、Bitmapオブジェクトを以下のように用意する。
Bitmap ^ bm = gcnew Bitmap( fw, fh, Drawing::Imaging::PixelFormat::Format24bppRgb );
このBitmapオブジェクトbmは、コンストラクタBitmapの第3引数をFormat24bppRgbとして24ビットのビットマップ形式で作成されていることに注意。bmに作成された画像は、ビットマップ形式で以下のように保存する
bm->Save( "mysample24.bmp", Drawing::Imaging::ImageFormat::Bmp );
メソッドSaveの第2引数にBmpが設定されていることに注意。
上のメソッドSaveの実行によって保存されたファイルをViSaGeに読み込むときは、VideoModeを次の関数の呼び出しによってtrue color modeに設定しておく。
::vsgSetVideoMode(vsgTRUECOLOURMODE);
その後、以下の関数の実行により、ViSaGeのディスプレイに指定した画像ファイルが表示される。
::vsgSetDrawPage(vsgVIDEOPAGE, 0, 0);
::vsgSetDrawMode(vsgCENTREXY);
::vsgDrawImage(0, 0, 0, "mysample24.bmp" );
Visual C++による画像ファイルの作成とViSaGeによる表示は、以下の一連のコードの実行により行うことができる。
::vsgInit("");
::vsgSetVideoMode(vsgTRUECOLOURMODE);
int fh =
400, fw = 500;
Bitmap ^ bm = gcnew
Bitmap( fw, fh, Drawing::Imaging::PixelFormat::Format24bppRgb );
Graphics ^ g = Graphics::FromImage( bm );
Brush ^ bsh = gcnew
SolidBrush( Color::White );
g->FillRectangle( bsh, 0, 0, fw, fh );
Brush ^ bshB = gcnew
SolidBrush( Color::Blue );
g->FillRectangle( bshB, 100, 100,
fw-200, fh-200 );
bm->Save( "mysample24.bmp",
Drawing::Imaging::ImageFormat::Bmp );
::vsgSetDrawPage(vsgVIDEOPAGE, 0, 0);
::vsgSetDrawMode(vsgCENTREXY);
::vsgDrawImage(0, 0, 0, "mysample24.bmp" );
上のコードの実行により、白地の中央に青色の長方形が描かれた画像がViSaGeのディスプレイ上に表示される。
なお、Visual C++ 2008の無料版は
http://www.microsoft.com/japan/msdn/vstudio/2008/product/express/
からダウンロードすることができる。Visual C++ 2010も無料版があるが、ドットネット・プログラミングを行う場合はVisual C++2008の方がよい。新しいのが好みの場合は、Visual Studio 11 Betaがダウンロードできるので(2012.5.19現在)、こちらを勧める。Visual Studio 11 Betaは
http://www.microsoft.com/visualstudio/11/ja-jp/downloads
からダウンロードできる。ただし、Visual C++ 11はVisual C++ 2010と相性が良くないようである。
Visual C++による描画の説明は、<岡本安晴「大学生のための心理学VC++プログラミング入門」勁草書房>の第14章「描画」で行っている。本書で取り上げられていない事柄は、Visual C++のサンプルプログラムのウェブサイト
http://y-okamoto-psy1949.la.coocan.jp/VCpp/
でいろいろ扱っている。透明色の透明度を指定した画像のコピーの方法は、マスクを用いた画像のオーバーレイに使用できるが、この透明度を指定した画像のコピーのプログラム例は
http://y-okamoto-psy1949.la.coocan.jp/VCpp/PictureLoadCopy/
で説明している。