LoadGraphScreen | 画像ファイルを読みこんで画面に表示する |
LoadGraph | 画像ファイルのメモリへの読みこみ、及び動画ファイルのロード |
DrawGraph | メモリに読みこんだグラフィックの描画 |
LoadDivGraph |
画像ファイルのメモリへの分割読みこみ |
DrawTurnGraph |
メモリに読みこんだグラフィックの左右反転描画 |
DrawExtendGraph | メモリに読みこんだグラフィックの拡大縮小描画 |
DrawRotaGraph | メモリに読みこんだグラフィックの回転描画 |
DrawRotaGraph2 | メモリに読みこんだグラフィックの回転描画(回転中心指定あり) |
DrawModiGraph | メモリに読みこんだグラフィックの自由変形描画 |
DrawRectGraph | グラフィックの指定矩形部分のみを描画 |
DerivationGraph | 指定のグラフィックの指定部分だけを抜き出して新たなグラフィックを作成する |
SetDrawMode | 描画モードをセットする |
SetDrawBlendMode | 描画の際のブレンドモードをセットする |
GetGraphSize | グラフィックのサイズを得る |
宣言 | int LoadGraphScreen( int x , int y , char *GraphName , int TransFlag ) ; |
概略 | 画像ファイルを読みこんで画面に表示する |
引数 | x ,
y : ロードした画像を描画する矩形の左上頂点の座標 GraphName : ロードする画像パスの文字列があるポインタ TransFlag : 透過色を入れるか、のフラグ。TRUEで透過色有効になる (逆はFALSE) |
戻り値 | 0:成功 −1:エラー発生 |
解説 | 画像ファイルをGraphNameの示すパスを元にディスクから読みこんで ( x , y
)を画像の左上の頂点とした領域に描画します。 TransFlagをTRUEにすると画像ファイルの限りなく黒に近い部分を 透過色とし、その部分は画面上に元から画像が残ります。 ※毎回ファイルから読み込むので、ループ内で使用すべきではありません。 |
#include "DxLib.h" int WINAPI WinMain(DXLIB) { DxLib_Init(); LoadGraphScreen( 0 , 0 , "test1.bmp" , TRUE ) ; WaitKey() ; DxLib_End() ; return 0 ; } |
宣言 | int LoadGraph( char *FileName ) ; |
概略 | 画像ファイルのメモリへの読みこみ、及び動画ファイルのロード |
引数 | FileName
: ロードする画像、及び動画ファイルの ファイルパス文字列へのポインタ |
戻り値 | −1 : エラー発生 −1以外: グラフィックのハンドル |
解説 | 画像ファイルをメモリにロードします。 これは表示する必要が出るたびにディスクにアクセスすると 画像処理の負荷が非常に高くなってしまうので、ディスクよりも 高速に処理を行うことが出来るメモリ上に画像を保存して しまおう、と言う考えから来ているものです。 この関数が成功するとグラフィックハンドルと言うものが 返って来ます。これはメモリに保存した画像の識別番号で int 型の数値です、読みこんだ画像を描画する際に この識別番号を指定するとメモリに読みこんだ画像を 描画することが出来ます。 ※読み込むことの出来る画像形式は BMP,JPEG,PNG,DDS,ARGB,TGA の6種類です。 アルファチャンネル画像の自動読み込みについて DXライブラリでは、LoadGraph 等の画像ファイルを扱う関数全般で、 指定のファイル名の末端に『_a』が付く画像ファイルが在った場合、 その画像ファイルを透明情報として読み込みます。 透明情報として扱われる画像の色が白に近いほど不透明に、黒に近いほど 透明になります。 画像中に透明な部分を付けたいとき、又は、透過させる部分とさせない部分の 境界を暈したい時等に有効です。 動画ファイルのロードについて FileName に動画ファイルのファイルパスを渡すと、戻り値として只の グラフィックハンドルではなく、ムービーグラフィックハンドルが関数から 返ってきます。 このハンドルは動画ファイルを普通の画像と同じように DrawGraph 関数や DrawExtendGraph 関数などで 動画像を描画することが出来ます。 詳しい説明は PlayMovieToGraph 関数の 解説をご参照下さい。 |
宣言 | int DrawGraph( int x, int y, int GrHandle, int TransFlag ) ; |
概略 | メモリに読みこんだグラフィックの描画 |
引数 | x , y : グラフィックを描画する領域の左上頂点の座標 GrHandle : 描画するグラフィックのハンドル TransFlag : 透過色を有効にするか、のフラグ(TRUEで有効、FALSEで無効) |
戻り値 | 0:成功 −1:エラー発生 |
解説 | 読みこんだ(作成した) グラフィックを( x , y
)を描画する画像の左上頂点として描画します。 TransFlagをTRUEにすると描画するグラフィックの限りなく黒に近い 部分を透過色とし、その部分は画面上に元から画像が残ります。 |
#include "DxLib.h" int WINAPI WinMain(DXLIB) { int g; DxLib_Init(); g = LoadGraph("test1.bmp"); // BMP画像のメモリへの読みこみ DrawGraph( 0 , 0 , g , FALSE); // 画面左上に描画します WaitKey() ; DxLib_End() ; return 0 ; } |
int LoadDivGraph( char *FileName ,
int AllNum , int XNum , int YNum , int XSize , int YSize , int *HandleBuf ) ; |
|||||||||||||||||
概略 | 画像ファイルのメモリへの分割読みこみ | ||||||||||||||||
引数 | FileName : 分割読み込みする画像ファイル文字列のポインタ AllNum : 画像の分割総数 XNum ,YNum : 画像の横向きに対する分割数と縦に対する分割数 SizeX ,SizeY : 分割された画像一つの大きさ HandleBuf : 分割読み込みして得たグラフィックハンドルを 保存するint型の配列へのポインタ |
||||||||||||||||
戻り値 | 0:成功 −1:エラー発生 |
||||||||||||||||
解説 | 一つの画像ファイルを指定されたサイズ、指定された数で分割し
メモリに保存します。 これはアニメーションパターンなどを一つの 画像に纏めて保存した場合などを想定して作られた関数です。 SizeX , SizeYを一つのグラフィックのサイズとして 横XNum列YNum行分に分け、総数AllNum個で分割読み込みします。 分割した分だけ作成されたグラフィックハンドルはHandleBufで指定した int型変数配列のポインタに順に格納されていきます。格納される グラフィックハンドルの順は以下のようになります 例 XNum = 4 ; YNum = 4 ; AllNum = 14 ;
|
#include "DxLib.h" int WINAPI WinMain(DXLIB) { int mc[8]; DxLib_Init(); // 32*32ピクセルの画像を横4列、縦2行で8個配列mcに読み込む LoadDivGraph( "map.png",8,4,2,32,32,mc ) ; for(int i=0;i<8;i++) DrawGraph( i*50 , 100 , mc[i] , FALSE ) ; WaitKey() ; DxLib_End() ; return 0 ; } |
宣言 | int DrawTurnGraph( int x, int
y, int GrHandle, int TransFlag ) ; |
概略 | メモリに読みこんだグラフィックの左右反転描画 |
引数 | x , y : 描画する反転した画像の左上頂点の座標 GrHandle : 描画するグラフィックのハンドル TransFlag : 透過色が有効か、フラグ(TRUEで有効FALSEで無効) |
戻り値 | 0:成功 −1:エラー発生 |
解説 | 読みこんだ(作成した) グラフィックを( x , y
)を描画する画像の左上頂点として左右反転描画します。 TransFlagをTRUEにすると描画するグラフィックの限りなく黒に近い 部分を透過色とし、その部分は画面上に元から画像が残ります。 |
#include "DxLib.h" int WINAPI WinMain(DXLIB) { int g; DxLib_Init(); g = LoadGraph("test1.bmp"); DrawTurnGraph(100, 0, g, FALSE) ; // 画像を左右反転して描画します WaitKey() ; DxLib_End() ; return 0 ; } |
宣言 | int DrawExtendGraph( int x1, int y1,
int x2, int y2, int GrHandle , int TransFlag ) ; |
概略 | メモリに読みこんだグラフィックの拡大縮小描画 |
引数 | x1 , y1 : グラフィックを描画する矩形の左上頂点の座標 x2 , y2 : グラフィックを描画する矩形の右下頂点+1の座標 GrHandle : 描画するグラフィックのハンドル TransFlag : 透過色が有効か、フラグ(TRUEで有効FALSEで無効) |
戻り値 | 0:成功 −1:エラー発生 |
解説 | 読みこんだ(作成した) グラフィックを左上頂点を( x1 , y1 )右下頂点を( x2 -
1, y2 - 1 )とした 矩形領域に描画します。グラフィックの大きさが矩形領域よりも 小さい時は拡大描画され、矩形領域よりも大きかった時は縮小描画
されます。 TransFlagをTRUEにすると描画するグラフィックの限りなく黒に近い 部分を透過色とし、その部分は画面上に元から画像が残ります。 |
#include "DxLib.h" int WINAPI WinMain(DXLIB) { int g; DxLib_Init(); g = LoadGraph("map.png"); DrawExtendGraph(100, 50, 100+256, 50+128, g, FALSE); //縦横2倍して表示 WaitKey() ; DxLib_End() ; return 0 ; } |
宣言 | int DrawRotaGraph( int x, int
y, double ExtRate, double Angle, int GrHandle , int TransFlag , int TurnFlag ) ; |
概略 | メモリに読みこんだグラフィックの回転描画 |
引数 | x , y : グラフィックを描画する領域の中心座標 ExtRate : 拡大率(1.0で等倍) Angle : 描画角度(ラジアン指定) GrHandle : 描画するグラフィックの識別番号(グラフィックハンドル) TransFlag : 透過色が有効か、フラグ(TRUEで有効FALSEで無効) TurnFlag : 画像の左右反転を行うか、のフラグ(FALSEで普通に描画 TRUEで反転) |
戻り値 | 0:成功 −1:エラー発生 |
解説 | 読みこんだ(作成した) グラフィックを回転、拡大処理を施して描画します。 ExtRate は拡大率です。 1.0を等倍とし2.0なら2倍 に拡大されます。 Angle は描画角度です。角度の指定単位はラジアンで π(3.14159〜)で180度回転します。1度分だけ回転させたい 場合は π ÷ 180 × 1 とすれば1度分だけグラフィックが 右回り方向に回転して描画されます。 こうして拡大、回転を施されたグラフィックは( x , y )の示す 座標を描画先画面上の画像の中心座標として描画されます。 TransFlagをTRUEにすると描画するグラフィックの限りなく黒に近い 部分を透過色とし、その部分は画面上に元から画像が残ります。 TurnFlag をTRUE(1)にすると画像は左右反転した状態で描画され、 FALSE(0) を指定すると普通に描画されます。 |
#include "DxLib.h" int WINAPI WinMain(DXLIB) { int g; float rad = 3.14f / 180; //ラジアン定数 DxLib_Init(); g = LoadGraph("map.png"); DrawRotaGraph( 320, 240, 1.5f, 45 * rad, GHandle, TRUE ) ; WaitKey() ; DxLib_End() ; return 0 ; } |
宣言 | int DrawRotaGraph2( int x, int
y, int cx, int cy, double ExtRate, double Angle, int GrHandle, int TransFlag, int TurnFlag ) ; |
概略 | メモリに読みこんだグラフィックの回転描画(回転中心指定あり) |
引数 | x , y : 画像を回転描画する画面上の中心座標 cx , cy : 画像を回転描画する画像上の中心座標 ExtRate : 拡大率(1.0で等倍) Angle : 描画角度(ラジアン指定) GrHandle : 描画するグラフィックの識別番号(グラフィックハンドル) TransFlag : 透過色が有効か、フラグ(TRUEで有効FALSEで無効) TurnFlag : 画像の左右反転を行うか、のフラグ(FALSEで普通に描画 TRUEで反転) |
戻り値 | 0:成功 −1:エラー発生 |
解説 | DrawRotaGraphでは常に画像の中心が 回転の中心となっていますが、この関数では引数 cx, cy が示す画像 中の座標を回転中心として描画を行います。 |
#include "DxLib.h" int WINAPI WinMain(DXLIB) { int g; float rad = 3.14f / 180; //ラジアン定数 DxLib_Init(); g = LoadGraph("map.png"); DrawRotaGraph2( 320, 240, 0, 0, 1.5f, 45 * rad, g, TRUE ) ; WaitKey() ; DxLib_End() ; return 0 ; } |
宣言 | int DrawModiGraph( int x1, int y1,
int x2, int y2, int x3, int y3, int x4, int y4, int GrHandle , int TransFlag ); |
概略 | メモリに読みこんだグラフィックの自由変形描画 |
引数 | x1 , y1 , x2 , y2 x3 , y3 , x4 , y4 : x1から順に描画する画像の左上、右上、 右下、左下の頂点の座標 GrHandle : 描画するグラフィックのハンドル TransFlag : 透過色が有効か、フラグ(TRUEで有効FALSEで無効) |
戻り値 | 0:成功 −1:エラー発生 |
解説 | 読みこんだ(作成した) グラフィックを( x1 , y1 )を左上頂点、( x2 - 1,
y2 ) を右上頂点、 ( x3 - 1, y3 - 1 ) を右下頂点、( x4, y4 - 1 ) を左下頂点とした四角形
に画像を変形し描画します。 画像変形後の画像内の各点が一次変換で求まらない場合は 画像結果がおかしくなります。 TransFlagをTRUEにすると描画するグラフィックの限りなく黒に近い 部分を透過色とし、その部分は画面上に元から画像が残ります。 |
#include "DxLib.h" int WINAPI WinMain(DXLIB) { int g; DxLib_Init(); g = LoadGraph("map.png"); DrawModiGraph( 0, 0, 320, 62, 168, 121, 12, 56, g, TRUE); WaitKey() ; DxLib_End() ; return 0 ; } |
宣言 | int DrawRectGraph( int DestX, int
DestY, int SrcX, int SrcY, int Width, int Height, int GraphHandle, int TransFlag, int TurnFlag ) ; |
概略 | グラフィックの指定矩形部分のみを描画 |
引数 | int DestX, int DestY : グラフィックを描画する座標 int SrcX, int SrcY : 描画するグラフィック上の描画したい矩形の左上座標 int Width, int Height : 描画するグラフィックのサイズ int GraphHandle : 描画するグラフィックのハンドル int TransFlag : 透過色処理の有無(TRUEで有効FALSEで無効) int TurnFlag : 画像反転処理の有無(TRUEで有効FALSEで無効) |
戻り値 | 0:成功 −1:エラー発生 |
解説 | 読みこんだ(作成した)グラフィックの指定座標に囲まれた部分 ( SrcX, SrcY )-( SrcX + Width , SrcY + Height ) だけを描画します。 沢山のグラフィックを一つの画像にまとめた時などに使います。 |
#include "DxLib.h" int WINAPI WinMain(DXLIB) { int g; DxLib_Init(); g = LoadGraph("map.png"); DrawRectGraph( 320, 240, 32, 16, 55, 40, g, TRUE, FALSE ) ; WaitKey() ; DxLib_End() ; return 0 ; } |
宣言 | int DerivationGraph( int SrcX, int
SrcY, int Width, int Height, int SrcGraphHandle ) ; |
概略 | 指定のグラフィックの指定部分だけを抜き出して新たなグラフィックを作成する |
引数 | int SrcX, int SrcY : グラフィック中の抜き出したい矩形の左上座標 int Width, int Height : 抜き出すグラフィックのサイズ int SrcGraphHandle : 抜き出したいグラフィックのハンドル |
戻り値 | −1:エラー発生 |
−1以外:新しいグラフィックのハンドル | |
解説 | 読みこんだ(作成した) グラフィックの一部分を抜き出し、新しいグラフィックのハンドルを
作成します。 主に一つの画像ファイルに複数のグラフィックが詰まっている場合、 それらを個々のグラフィックとして扱いたい場合などに使用します。 《注意!》 この関数によって作成されたグラフィックは抜き出し元となる SrcGraphHandle が示しているグラフィックと共有しますので、 DerivationGraph 関数によって作成したグラフィックハンドルを 使用して GetDrawScreenGraph 関数を 使用した場合は SrcGraphHandle 上のグラフィック情報にも影響が 出ますので注意してください。 |
#include "DxLib.h" int WINAPI WinMain(DXLIB) { int g,g2; DxLib_Init(); g = LoadGraph("map.png"); g2 = DerivationGraph( 64, 32, 32, 32, g) ; DrawGraph( 320, 0, g, TRUE) ; DrawGraph( 320, 240, g2, TRUE) ; WaitKey() ; DxLib_End() ; return 0 ; } |
宣言 | int SetDrawMode( int DrawMode ) ; |
概略 | 描画モードをセットする |
引数 | DrawMode : 描画モードを指定する引数です DX_DRAWMODE_NEAREST : ネアレストネイバー法で描画する (標準) DX_DRAWMODE_BILINEAR : バイリニア法で描画する |
戻り値 | 0:成功 −1:エラー発生 |
解説 | 描画モードとは主に拡大描画をしたときに影響がでます。 それぞれ長所と短所があります。デフォルトとなっている ネアレストネイバー法は拡大描画をしたときにドットが粗くなって しまっているのが一目瞭然になります。 逆にバイリニア法は拡大した時のドットとドット間の境目を 滑らかに描画してくれるのでネアレストネイバー法で描画した時よりも綺麗に描画する事が出来るのですが、普通(等倍)に描画した時は逆にぼやけた感じになってしまう事があります。 |
#include "DxLib.h" int WINAPI WinMain(DXLIB) { int g; DxLib_Init(); g = LoadGraph("map.png"); DrawExtendGraph( 0, 0, 400, 200, g, FALSE ) ; // 描画モードをバイリニア法にする SetDrawMode( DX_DRAWMODE_BILINEAR ); DrawExtendGraph( 0, 200, 400, 400, g, FALSE ) ; WaitKey() ; DxLib_End() ; return 0 ; } |
宣言 | int SetDrawBlendMode( int BlendMode , int Pal ) ; |
概略 | 描画の際のブレンドモードをセットする |
引数 | BlendMode :
描画ブレンドモードを指定する引数です DX_BLENDMODE_NOBLEND : ノーブレンド(デフォルト) DX_BLENDMODE_ALPHA : αブレンド(半透明) DX_BLENDMODE_ADD : 加算ブレンド DX_BLENDMODE_SUB : 減算ブレンド DX_BLENDMODE_MUL : 乗算ブレンド Pal : 描画ブレンドモードのパラメータ(0〜255) |
戻り値 | 0:成功 −1:エラー発生 |
解説 | DrawGraph、DrawExtendGraph、
DrawRotaGraph、DrawModiGraph、DrawTurnGraph、
DrawLine、DrawBox、 DrawCircle, DrawPixelDrawString
を使用したときの描画先に 元からある画像とのブレンドを行うか等の設定を行います。 DX_BLENDMODE_NOBLEND ブレンド処理は行われず描画しようとしている グラフィックがそのまま描画される事となります(これがデフォルトです)。 このモードの場合Palの値は意味を持ちません DX_BLENDMODE_ALPHA 描画先に元から描かれていた画像と描画しようと している画像とでアルファブレンディング(半透明)します。 Palの値が255に近いほど描画しようとしているグラフィック の方が濃く表示されます。 DX_BLENDMODE_ADD 描画先に元から描かれていた画像に描画しようと している画像の各ドットの明るさを加算します。 加算される割合はPalの値が255に近いほど強くなります。 DX_BLENDMODE_SUB 描画先に元から描かれている画像から描画しようと している画像の各ドットの明るさを引きます。 元の画像が明るいものほど、描画先の輝度を奪います。 ダーク系の表現に有用です。 (注意!DX_BLENDMODE_SUB は表画面に描画する際に使用すると 表示が一瞬おかしくなります。このブレンドモードを使用する際は 必ず SetDrawScreen 関数で DX_SCREEN_BACK を指定し、 裏画面に描画するようにしてください。) DX_BLENDMODE_MUL 描画先に元から描かれている画像の色と、描画し ようとしている画像の色とで乗算します。 『色の乗算って何?』と思われるかもしれませんので、『明るさ 同士の掛け算』と言った方が分かりやすいかもしれません。 ただ、明るさ同志の掛け算と言うと描画先の画像に元からある色を 元の何倍も明るい色にしてしまったり出来そうなイメージがありますが、 実際は描画先に元からある色を元の色以上に明るくすることは出来ず、 描画しようとしている画像の色が真っ白だったら元の画像はそのまま、 少しでも暗ければその分暗く、という具合になります。 用途としては、黒い煙を表現したい時や、自分の回り以外真っ暗 で見えない、等の表現をしたい時などがあります。 尚、このモードでは Pal の値は意味を持ちません。 |
#include "DxLib.h" int WINAPI WinMain(DXLIB) { int g,g2; DxLib_Init(); g = LoadGraph("test1.bmp"); g2 = LoadGraph("map.png"); DrawGraph( 0 , 0 , g , FALSE ) ; // 描画ブレンドモードをアルファブレンド(50%)にする SetDrawBlendMode( DX_BLENDMODE_ALPHA , 128 ) ; DrawGraph( 0 , 0 , g2 , FALSE ) ; // 描画ブレンドモードを加算ブレンド(100%)にする SetDrawBlendMode( DX_BLENDMODE_ADD , 255 ) ; DrawGraph( 0 , 100 , g2 , FALSE ) ; // 描画ブレンドモードを減算ブレンド(80%)にする SetDrawBlendMode( DX_BLENDMODE_SUB , 204 ) ; DrawGraph( 0 , 200 , g2 , FALSE ) ; // 描画ブレンドモードを乗算ブレンドにする SetDrawBlendMode( DX_BLENDMODE_MUL , 0 ) ; DrawGraph( 0 , 300 , g2 , FALSE ) ; // 描画ブレンドモードをノーブレンドにする SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 ) ; DrawGraph( 0 , 400 , g2 , FALSE ) ; WaitKey() ; DxLib_End() ; return 0 ; } |
宣言 | int GetGraphSize( int GrHandle
, int *SizeXBuf , int *SizeYBuf ) ; |
概略 | グラフィックのサイズを得る |
引数 | GrHandle : サイズを調べるグラフィックのハンドル SizeXBuf : グラフィックの幅を保存するint型変数のポインタ SizeYBuf : グラフィックの高さを保存するint型変数のポインタ |
戻り値 | 0:成功 −1:エラー発生 |
解説 | GrHandleで指定したハンドルが持つグラフィックのサイズを 取得する関数です。サイズはそれぞれSizeXBufとSizeYBufが示す int型変数に保存されます。 |
test1.bmpを読みこんでそのビットマップのサイズをint型変数x,yに格納します |