トップページ > 過去ログ > 記事閲覧
CreateDivGraphの引数
名前:dom 日時: 2011/05/22 11:44

png画像をあらかじめ決めた数に分割してメモリに読み込みたいので以下のようなコードを考えたのですが、 CreateDivGraphの第3、第4引数がわからなくて困っています。どうすればよいでしょうか? int GHandle[3]; void LoadImage( const char* FileName )  // 一列で横並びの画像を3分割したい {   int width, height; int temp; temp= LoadGraph( FileName ); GetGraphSize( temp, &width, &height ); CreateDivGraph( width, height, ?, ?, 3, 3, 1, width/3, height, GHandle ); DeleteGraph( temp ); }

Page: 1 |

Re: CreateDivGraphの引数 ( No.1 )
名前:いっち 日時:2011/05/22 12:34

CreateDivGraph の使い方は使ったことが無いので分かりません。 ロード済みのグラフィックハンドルを分割してグラフィックハンドルにするのであれば DerivationGraph を 未ロードの画像ファイルから分割してグラフィックハンドルにするのであれば LoadDivGraph をご使用になるのが良いと思います。
Re: CreateDivGraphの引数 ( No.2 )
名前:管理人 日時:2011/05/29 14:37

いっちさんも仰られていますが、domさんのされたいことは LoadDivGraph で 実現可能だと思います よろしければ LoadDivGraph のリファレンスをご参照になってみてください http://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_graph.html#R3N3 CreateDivGraph は恐らく domさんのされたいことを実現するためには役に立たない関数ですが 一応解説いたしますと・・・ その前に、すいません、現在のバージョンでは CreateGraph, CreateDivGraph, ReCreateGraph の3つの関数が正常に動作しない状態でした 修正版をアップしましたので、よろしければこちらをお使いください m(_ _;m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCCTest.exe // Gnu C++ 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) 改めて CreateDivGraph の解説をいたしますと、 CreateDivGraph はメモリ上に24bitビットマップイメージがある場合に使う関数で、 第3引数は1ラインあたりのバイト数、第4引数は24bitビットマップイメージの 先頭ピクセルのアドレスを渡します サンプルとしてプログラムでサイズ640x480の 24bitビットマップのイメージを メモリ上に作成して( グラデーションを描いています )、それを CreateDivGraph を 使って横8、縦10分割してグラフィックハンドルを作成して、隙間つきで描画するものを 作成してみました #include "DxLib.h" #define WIDTH 640 // 画像の横幅 #define HEIGHT 480 // 画像の縦幅 #define DIV_X 8 // 画像の横方向の分割数 #define DIV_Y 10 // 画像の縦方向の分割数 // 24bit ビットマップイメージを一時的に格納するバッファ BYTE Image[ HEIGHT * WIDTH * 3 ] ; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int i, j ; int Handle[ DIV_X * DIV_Y ] ; // ウインドウモードで起動 ChangeWindowMode( TRUE ); // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1; // グラデーションイメージの作成 for( i = 0 ; i < HEIGHT ; i ++ ) { for( j = 0 ; j < WIDTH ; j ++ ) { Image[ j * 3 + i * WIDTH * 3 + 0 ] = j * 256 / WIDTH ; // 青 Image[ j * 3 + i * WIDTH * 3 + 1 ] = i * 256 / HEIGHT ; // 緑 Image[ j * 3 + i * WIDTH * 3 + 2 ] = ( j + i * WIDTH ) * 256 / ( HEIGHT * WIDTH ) ; // 赤 } } // グラデーションイメージを分割してグラフィックハンドルを作成 CreateDivGraph( WIDTH, HEIGHT, WIDTH * 3, Image, DIV_X * DIV_Y, DIV_X, DIV_Y, WIDTH / DIV_X, HEIGHT / DIV_Y, Handle ) ; // 画面に分割画像を隙間つきで描画 for( i = 0 ; i < DIV_Y ; i ++ ) { for( j = 0 ; j < DIV_X ; j ++ ) { DrawGraph( j * ( WIDTH / DIV_X + 2 ), i * ( HEIGHT / DIV_Y + 2 ), Handle[ j + i * DIV_X ], FALSE ) ; } } // キー入力待ち WaitKey() ; // DXライブラリの後始末 DxLib_End(); // ソフトの終了 return 0; }

Page: 1 |