| 図形描画関数 | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 画面左上から右下にかけて真っ白の線を描きます
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int Cr ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
Cr = GetColor( 255 , 255 , 255 ) ; // 白色の値を取得
DrawLine( 0 , 0 , 640 , 480 , Cr ) ; // 線を描画
WaitKey() ; // キーの入力待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 画面中心に青い四角を描き、四角形の中も塗りつぶします
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int Cr ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
Cr = GetColor( 0 , 0 , 255 ) ; // 青色の値を取得
DrawBox( 0 , 0 , 640 , 480 , Cr , TRUE) ; // 四角形を描画
WaitKey() ; // キーの入力待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 画面中心に半径150の青い円を描きます、中身は塗りつぶしません。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int Cr ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
Cr = GetColor( 0 , 0 , 255 ) ; // 青色の値を取得
// 円を描画
DrawCircle( 320 , 240 , 150 , Cr ) ;
WaitKey() ; // キーの入力待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 画面中心に半径 (150,100) の青い楕円を描きます。中身も青色で塗りつぶします
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int Cr ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
Cr = GetColor( 0 , 0 , 255 ) ; // 青色の値を取得
// 楕円を描画
DrawOval( 320 , 240 , 150 , 100 , Cr , TRUE ) ;
WaitKey() ; // キーの入力待ち((7-3)『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 画面中心に黄色の三角形を描画し、中身を塗りつぶします
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int Cr ;
// DXライブラリ初期化
if( DxLib_Init() == -1 ) return -1;
// 黄色の値を取得
Cr = GetColor( 255 , 255 , 0 ) ;
// 三角形を描画
DrawTriangle( 320, 100, 160, 420, 480, 420, Cr, TRUE ) ;
// キーの入力待ち((7-3)『WaitKey』を使用)
WaitKey() ;
// DXライブラリ使用の終了処理
DxLib_End() ;
// ソフトの終了
return 0 ;
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 画面中心に緑の点を描画します
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int Cr ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
Cr = GetColor( 0 , 255 , 0 ) ; // 緑色の値を取得
// 点を描画
DrawPixel( 320 , 240 , Cr ) ;
WaitKey() ; // キーの入力待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル なし | ||||||||||||||||||||||||||||
| グラフィックデータ制御関数 | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 画面左上を画像の左上頂点としtest1.bmpを透過色有効で表示します
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// BMP画像の表示
LoadGraphScreen( 0 , 0 , "test1.bmp" , TRUE ) ;
WaitKey() ; // キーの入力待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル test1.bmpを読みこみ画面左上に描画します
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int GHandle ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// BMP画像のメモリへの読みこみ
GHandle = LoadGraph( "test1.bmp" ) ;
// 画面左上に描画します(『DrawGraph』を使用)
DrawGraph( 0 , 0 , GHandle , FALSE ) ;
// キーの入力待ち(『WaitKey』を使用)
WaitKey() ;
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル test2.bmpを一つのグラフィックのサイズ48×56横4、縦3、分割総数 10で分割読み込みし、int型の配列GHandleに格納します。 その後ロードしたグラフィックパターンを画面左上でアニメーション させます。(画面はちらつきます)
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int GHandle[ 10 ] ;
int i ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// BMP画像のメモリへの分割読み込み
LoadDivGraph( "test2.bmp" , 10 , 4 , 3 , 48 , 56 , GHandle ) ;
// ロードしたグラフィックのアニメーション
i = 0 ;
// キーが押されるまでループ(キー判定には『CheckHitKeyAll』を使用)
while( CheckHitKeyAll() == 0 )
{
// グラフィックの描画(『DrawGraph』使用)
DrawGraph( 0 , 0 , GHandle[ i ] , FALSE ) ;
// アニメーションパターンナンバーを変更
i ++ ;
if( i == 10 ) i = 0 ;
// 一定時間待つ(『WaitTimer』使用)
WaitTimer( 100 ) ;
// メッセージ処理
if( ProcessMessage() == -1 )
{
break ; // エラーが起きたらループから抜ける
}
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル GetDrawScreenGraph のサンプルを参考にして下さい。 | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル test1.bmpをメモリに読み込み、画面左上に透過色有効で描画する
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int GHandle ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// test1.bmpの読み込み
GHandle = LoadGraph( "test1.bmp" ) ;
// 読みこんだグラフィックを画面左上に描画
DrawGraph( 0 , 0 , GHandle , TRUE ) ;
WaitKey() ; // 結果を見るためにキー待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル test1.bmpをメモリに読み込み、座標( 100 , 0 )に透過色無効で反転描画する
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int GHandle ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// test1.bmpの読み込み
GHandle = LoadGraph( "test1.bmp" ) ;
// 読みこんだグラフィックを反転描画
DrawTurnGraph( 100 , 0 , GHandle , FALSE ) ;
WaitKey() ; // 結果を見るためにキー待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル test1.bmp(サイズ130×480)をメモリに読み込み、座標( 100 , 0 )に 横幅2倍のサイズで透過色有効で描画する
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int GHandle ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// test1.bmpの読み込み
GHandle = LoadGraph( "test1.bmp" ) ;
// 読みこんだグラフィックを拡大描画
DrawExtendGraph( 100 , 0 , 100 + 130 * 2 , 0 + 480 , GHandle , TRUE ) ;
WaitKey() ; // 結果を見るためにキー待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 画面中心に test1.bmp を1.5倍に拡大し90度回転させて描画します
#include "DxLib.h"
#define PI 3.1415926535897932384626433832795f
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int GHandle ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// test1.bmpの読み込み
GHandle = LoadGraph( "test1.bmp" ) ;
// 読みこんだグラフィックを回転描画
DrawRotaGraph( 320 , 240 , 1.5f , PI / 2 , GHandle , TRUE ) ;
WaitKey() ; // 結果を見るためにキー待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 画面中心に test1.bmp を1.5倍に拡大し画像の左上端を基点に90度回転させて描画します
#include "DxLib.h"
#define PI 3.1415926535897932384626433832795f
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int GHandle ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// test1.bmpの読み込み
GHandle = LoadGraph( "test1.bmp" ) ;
// 読みこんだグラフィックを回転描画
DrawRotaGraph2( 320, 240, 0, 0, 1.5f, PI / 2, GHandle, TRUE ) ;
WaitKey() ; // 結果を見るためにキー待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル test1.bmp(サイズ130×480)をメモリに読み込み、( 0 , 0 )( 145 , 62 ) ( 12 , 56 )( 168 , 121 )をそれぞれ描画する画像の左上、右上、右下、 左下として透過色有効で描画する
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int GHandle ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// test1.bmpの読み込み
GHandle = LoadGraph( "test1.bmp" ) ;
// 読みこんだグラフィックを自由変形描画
DrawModiGraph( 0 , 0 , 145 , 62 , 168 , 121 , 12 , 56 , GHandle , TRUE ) ;
WaitKey() ; // 結果を見るためにキー待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル グラフィック testDiv.bmp を読み込み、グラフィック中の (32,32)-(64,64) の部分 だけを画面座標 (100,100) に描画する
#include "DxLib.h"
// WinMain 関数
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int Graph ;
// DXライブラリの初期化
if( DxLib_Init() == -1 ) return -1 ;
// グラフィックのロード
Graph = LoadGraph( "testDiv.bmp" ) ;
// グラフィック中の(32,32)-(64,64)の部分を画面座標(100,100)に
// 透過色処理あり、反転処理なしで描画
DrawRectGraph( 100, 100, 32, 32, 32, 32, Graph, TRUE, FALSE ) ;
// キーの入力待ち
WaitKey() ;
// DXライブラリ使用の終了処理
DxLib_End() ;
// ソフトの終了
return 0 ;
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル testDiv.bmp をロードし、作成したグラフィックから、(0,32)-(32,64) の部分を抜き出し新たなグラフィックハンドルを作成します。
#include "DxLib.h"
// WinMain 関数
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int Graph, Graph2 ;
// DXライブラリの初期化
if( DxLib_Init() == -1 ) return -1 ;
// グラフィックのロード
Graph = LoadGraph( "testDiv.bmp" ) ;
// Graph 中の (0,32)-(32,64) の部分を抜き出し、新たな
// グラフィックハンドルを作成
Graph2 = DerivationGraph( 0, 32, 32, 32, Graph ) ;
// 新たに作成したグラフィックハンドルで描画
DrawGraph( 100, 100, Graph2, TRUE ) ;
// キーの入力待ち
WaitKey() ;
// DXライブラリ使用の終了処理
DxLib_End() ;
// ソフトの終了
return 0 ;
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 画面にでたらめに1000個の点を描き、その画面を取りこむ
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int GHandle ;
int i ;
int Cr ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// 白色の値を取得
Cr = GetColor( 255 , 255 , 255 ) ;
// 1000個の点を描く
for( i = 0 ; i < 1000 ; i ++ )
{
// ランダムな位置に点を描く(『GetRand』を使用)
DrawPixel( GetRand( 640 ) , GetRand( 480 ) , Cr ) ;
}
// 画面のサイズと同じサイズのグラフィックを作成
GHandle = MakeGraph( 640 , 480 ) ;
// 画面データの取りこみ
GetDrawScreenGraph( 0 , 0 , 640 , 480 , GHandle ) ;
WaitKey() ; // 結果を見るためにキー待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル test1.bmpをメモリに読み込み、そのサイズを取得する、上記の例を 無意味にもソフトプログラム化したものです。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int GHandle ;
int GSizeX , GSizeY ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// test1.bmpの読み込み
GHandle = LoadGraph( "test1.bmp" ) ;
// 読みこんだグラフィックのサイズを得る
GetGraphSize( GHandle , &GSizeX , &GSizeY ) ;
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル BMPをロードして表示したり作成したりした後これらのグラフィックを 削除する。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int GHandle , GHandle2 ;
int i ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// test1.bmpの読み込み
GHandle = LoadGraph( "test1.bmp" ) ;
// 適当な座標に10回描画
for( i = 0 ; i < 10 ; i ++ )
{
// 画像をランダムな座標に描画する(『GetRand』使用)
DrawGraph( GetRand( 640 ), GetRand( 480 ), GHandle, TRUE ) ;
}
// 空のグラフィックを作成
GHandle2 = MakeGraph( 128 , 128 ) ;
// 適当な領域を取りこむ
GetDrawScreenGraph( 156 , 24 , 156 + 128 , 24 + 128 , GHandle2 ) ;
// 取り込んだ画像で10回描画
for( i = 0 ; i < 10 ; i ++ )
{
// 画像をランダムな座標に描画する(『GetRand』使用)
DrawGraph( GetRand( 640 ), GetRand( 480 ), GHandle2, TRUE ) ;
}
// 全グラフィックを初期化
InitGraph() ;
WaitKey() ; // 結果を見るためにキー待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル test1.bmpをメモリに読み込み、画面左上に透過色有効で描画した後 メモリ上から削除する
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int GHandle ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// test1.bmpの読み込み
GHandle = LoadGraph( "test1.bmp" ) ;
// 読みこんだグラフィックを画面左上に描画
DrawGraph( 0 , 0 , GHandle , TRUE ) ;
// 描画が終ったのでグラフィックをメモリ上から削除する
DeleteGraph( GHandle ) ;
WaitKey() ; // 結果を見るためにキー待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル test1.bmp(サイズ130×480)を読み込みネアレストネイバー法と バイリニア法で描画する
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int GHandle ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// test1.bmpの読み込み
GHandle = LoadGraph( "test1.bmp" ) ;
// 描画モードをネアレストネイバー法にする
SetDrawMode( DX_DRAWMODE_NEAREST ) ;
// 読みこんだグラフィックを画面左上に拡大描画
DrawExtendGraph( 0 , 0 , 130 * 2 , 480 * 2 , GHandle , FALSE ) ;
// 描画モードをバイリニア法にする
SetDrawMode( DX_DRAWMODE_BILINEAR ) ;
// 読みこんだグラフィックを先ほどの隣に描画
DrawExtendGraph( 260 , 0 , 260 + 130 * 2 , 480 * 2 , GHandle , FALSE ) ;
WaitKey() ; // 結果を見るためにキー待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル back.bmpとtest1.bmpを読み込みそれぞれノーブレンドと アルファブレンドと加算ブレンドと減算ブレンドと乗算ブレンドで描画する
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int TestHandle , BackHandle ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// test1.bmpの読み込み
TestHandle = LoadGraph( "test1.bmp" ) ;
// back.bmpの読み込み
BackHandle = LoadGraph( "back.bmp" ) ;
// 描画ブレンドモードをノーブレンドにする
SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 ) ;
// 背景を描画
DrawGraph( 0 , 0 , BackHandle , FALSE ) ;
// 上に載せるグラフィックを描画
DrawGraph( 255 , 0 , TestHandle , TRUE ) ;
// キー待ち(『WaitKey』を使用)
WaitKey() ;
// 背景を描画
DrawGraph( 0 , 0 , BackHandle , FALSE ) ;
// 描画ブレンドモードをアルファブレンド(50%)にする
SetDrawBlendMode( DX_BLENDMODE_ALPHA , 128 ) ;
// 上に載せるグラフィックを描画
DrawGraph( 255 , 0 , TestHandle , TRUE ) ;
// キー待ち(『WaitKey』を使用)
WaitKey() ;
// 描画ブレンドモードをノーブレンドにする
SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 ) ;
// 背景を描画
DrawGraph( 0 , 0 , BackHandle , FALSE ) ;
// 描画ブレンドモードを加算ブレンド(100%)にする
SetDrawBlendMode( DX_BLENDMODE_ADD , 255 ) ;
// 上に載せるグラフィックを描画
DrawGraph( 255 , 0 , TestHandle , TRUE ) ;
// キー待ち(『WaitKey』を使用)
WaitKey() ;
// 描画ブレンドモードをノーブレンドにする
SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 ) ;
// 背景を描画
DrawGraph( 0 , 0 , BackHandle , FALSE ) ;
// 描画ブレンドモードを減算ブレンド(80%)にする
SetDrawBlendMode( DX_BLENDMODE_SUB , 204 ) ;
// 上に載せるグラフィックを描画
DrawGraph( 255 , 0 , TestHandle , TRUE ) ;
// キー待ち((7-3)『WaitKey』を使用)
WaitKey() ;
// 描画ブレンドモードをノーブレンドにする
SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 ) ;
// 背景を描画
DrawGraph( 0 , 0 , BackHandle , FALSE ) ;
// 描画ブレンドモードを乗算ブレンドにする
SetDrawBlendMode( DX_BLENDMODE_MUL , 0 ) ;
// 上に載せるグラフィックを描画
DrawGraph( 255 , 0 , TestHandle , TRUE ) ;
// キー待ち((7-3)『WaitKey』を使用)
WaitKey() ;
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル test1.bmpを読み込み赤の色要素のみで描画します
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int GHandle ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// test1.bmpの読み込み
GHandle = LoadGraph( "test1.bmp" ) ;
// 描画輝度を赤のみにセット
SetDrawBright( 255 , 0 , 0 ) ;
// グラフィックの描画
DrawGraph( 0 , 0 , GHandle , FALSE ) ;
// キー待ち(『WaitKey』を使用)
WaitKey() ;
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル R:255 G:0 B:255 の色を透過色にしてtest4.bmpを画面に描画する
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int GHandle ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// 透過色を変更
SetTransColor( 255 , 0 , 255 ) ;
// BMP画像のメモリへの読みこみ
GHandle = LoadGraph( "test4.bmp" ) ;
// 画面左上に描画します((3-7)『DrawGraph』を使用)
DrawGraph( 0 , 0 , GHandle , TRUE ) ;
// キーの入力待ち((6-3)『WaitKey』を使用)
WaitKey() ;
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル Scene1.jpg から Scene2.jpg への画面の切り替えを、ブレンド画像機能を使って行う(ブレンド画像に BlendGraph.bmp を使用)
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int BlendGraph, GrHandle1, GrHandle2 ;
int i ;
// DXライブラリ初期化処理
if( DxLib_Init() == -1 ) return -1 ;
// 裏画面を使用
SetDrawScreen( DX_SCREEN_BACK ) ;
// ブレンド画像を読み込む
BlendGraph = LoadBlendGraph( "BlendGraph.bmp" ) ;
// 二つの画像の読み込み
GrHandle1 = LoadGraph( "Scene1.jpg" ) ;
GrHandle2 = LoadGraph( "Scene2.jpg" ) ;
// 256 フレーム掛けて切り替え
for( i = 0 ; i < 256 ; i ++ )
{
// メッセージ処理
if( ProcessMessage() != 0 ) break ;
// Scene2.jpg を描画
DrawGraph( 0, 0, GrHandle2, FALSE ) ;
// Scene1.jpg と BlendGraph.bmp を合成して描画
// (境界幅は 64)
DrawBlendGraph( 0, 0, GrHandle1, FALSE, BlendGraph, i, 64 ) ;
// 裏画面の内容を表画面に反映
ScreenFlip() ;
}
// DXライブラリ使用の終了処理
DxLib_End() ;
// ソフトの終了
return 0 ;
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル LoadBlendGraph関数 のサンプルを参照してください。 | ||||||||||||||||||||||||||||
|
文字描画関係関数 | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 画面の中心に文字列を描画します
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int Cr ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// 白色の値を取得
Cr = GetColor( 255 , 255 , 255 ) ;
// 文字列の描画
DrawString( 250 , 240 - 32 , "Hello C World!" , Cr );
WaitKey() ; // キーの入力待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル メッセージを表示してからボタンが押されるまでの時間を描画します。
#include "DxLib.h"
// WinMain関数
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int Start , Time ;
int Cr ;
// DXライブラリの初期化
if( DxLib_Init() == -1 ) return 0;
// 白の色コードを保存
Cr = GetColor( 255 , 255, 255 ) ;
// スタートタイムを取得
Start = GetNowCount() ;
// メッセージを表示
DrawString( 0 , 0 , "なにかキーを押してください" , Cr ) ;
// ボタンが押されるまで待つ
WaitKey() ;
// 終了、経過時間を算出
Time = GetNowCount() - Start ;
// 画面に表示
ClearDrawScreen() ;
DrawFormatString( 0, 0, Cr, "ボタンが押されるまでに %dミリ秒経過しました", Time ) ;
// キー入力待ち
WaitKey() ;
// DXライブラリ使用の終了
DxLib_End() ;
return 0 ;
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 一つの文章を同じ列に2回にわけて描画します
#include <string.h>
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int StrWidth , StrLen ;
// DXライブラリの初期化
if( DxLib_Init() == -1 ) return -1 ;
// 最初の文字列を描画
DrawString( 0 , 0 , "今日もいい天気だ" , GetColor( 255 , 255 , 255 ) ) ;
// 文字列の長さを取得
StrLen = strlen( "今日もいい天気だ" ) ;
// 描画時の文字列の幅を取得
StrWidth = GetDrawStringWidth( "今日もいい天気だ" , StrLen ) ;
// 「今日もいい天気だ」の直後に新たな文字列を描画
DrawString( StrWidth , 0 , "明日も晴れると良いなあ" , GetColor( 255 , 255 , 255 ) ) ;
// キー入力待ち
WaitKey() ;
// DXライブラリの使用終了
DxLib_End() ;
// 終了
return 0 ;
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル ありません | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル フォントのサイズを64にし、画面中心に文字列を描画します
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int Cr ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// 描画する文字列のサイズを設定
SetFontSize( 64 ) ;
// 白色の値を取得
Cr = GetColor( 255 , 255 , 255 ) ;
// 文字列の描画
DrawString( 100 , 240 - 42 , "Hello C World!" , Cr );
WaitKey() ; // キーの入力待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル フォントの太さを3にし、文字列を描画します
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int Cr ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// 描画する文字列の太さを設定
SetFontThickness( 3 ) ;
// 白色の値を取得
Cr = GetColor( 255 , 255 , 255 ) ;
// 文字列の描画
DrawString( 100 , 240 - 42 , "Hello C World!" , Cr );
WaitKey() ; // キーの入力待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル フォントをMS明朝にして文字列を描画します
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int Cr ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// 描画する文字列の文字セットを変更します
ChangeFont( "MS 明朝" ) ;
// 白色の値を取得
Cr = GetColor( 255 , 255 , 255 ) ;
// 文字列の描画
DrawString( 100 , 240 - 42 , "Hello C World!" , Cr );
WaitKey() ; // キーの入力待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 最初にサイズ40で『DXライブラリ』と描画した後、フォントの タイプをエッジつきアンチエイリアスフォントに変更してもう一度 『DXライブラリ』と描画します。
#include "DxLib.h"
// WinMain関数
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
// DXライブラリの初期化
if( DxLib_Init() == -1 ) return 0 ;
// 画面を黄色で塗りつぶします
DrawBox( 0 , 0 , 640 , 480 , GetColor( 128,128, 0) , TRUE ) ;
// サイズを40に変更
SetFontSize( 40 ) ;
// 『DXライブラリ』と描画
DrawString( 100 , 100 , "DXライブラリ" , GetColor( 255,255,255 ) ) ;
// フォントのタイプをエッジつきアンチエイリアスフォントに変更
ChangeFontType( DX_FONTTYPE_ANTIALIASING_EDGE ) ;
// 『DXライブラリ』と描画
DrawString( 100 , 160 , "DXライブラリ" , GetColor( 255,255,255 ), GetColor( 0,0,0 ) ) ;
// キー入力を待つ
WaitKey() ;
// DXライブラリの終了
DxLib_End() ;
// ソフトの終了
return 0 ;
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル まずサイズ40、太さ3のフォントを作成し、そのフォントで画面に 『HELLOW!!』と描画します。そのあと標準のフォントデータで 『OK?』と言う文字列を描画します。
#include "DxLib.h"
// WinMain関数
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int FontHandle ;
// DXライブラリの初期化
if( DxLib_Init() == -1 ) return 0 ;
// デフォルトのフォントで、サイズ40、太さ3のフォントを作成し
// 作成したデータの識別番号を変数 FontHandle に保存する
FontHandle = CreateFontToHandle( NULL , 40 , 3 ) ;
// 作成したフォントで画面左上に『Hellow!!』と白色の文字列を描画する
DrawStringToHandle( 0 , 0 , "HELLOW!!" , GetColor( 255 , 255 , 255 ) , FontHandle ) ;
// 次に標準フォントデータで画面に『OK?』という文字列を描画する
DrawString( 0 , 50 , "OK?" , GetColor( 255 , 128 , 100 ) ) ;
// キー入力を待つ
WaitKey() ;
// 作成したフォントデータを削除する
DeleteFontToHandle( FontHandle ) ;
// DXライブラリの終了
DxLib_End() ;
// ソフトの終了
return 0 ;
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル CreateFontToHandle 関数のサンプルを参照してください。 | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル CreateFontToHandle 関数のサンプルを参照してください。 | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 動作については DrawFormatString 関数を参照して下さい。 | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 動作の挙動については GetDrawStringWidth 関数のサンプルを参照して ください | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 動作の挙動については GetDrawFormatStringWidth 関数を参照して ください | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル ありません。 | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル ありません。 | ||||||||||||||||||||||||||||
| 簡易画面出力関数 | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 画面に適当に文字列を出力する
#include "DxLib.h"
// WinMain関数
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
// DXライブラリ初期化
if( DxLib_Init() == -1 ) return 0;
// Hello C World!と表示、最後に改行
printfDx( "Hello C World!\n" ) ;
// 画面に適当に数値を描画
printfDx( " 600 x 800 = %d \n" , 600 * 800 ) ;
// 画面が降り切れるほど文字列を描画
printfDx( "実験実験実験実験実験実験実験実験実験" ) ;
printfDx( "実験実験実験実験実験実験実験実験実験" ) ;
printfDx( "実験実験実験実験実験実験実験実験実験実験" ) ;
// 画面を青くする
DrawBox( 0 , 0 , 640 , 480 , GetColor( 0 , 0 , 255 ) , TRUE ) ;
// 出力した文字列を表示
ScreenFlip() ;
// キーが押されるまで待つ
WaitKey() ;
// DXライブラリの使用終了
DxLib_End() ;
return 0 ;
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 画面に延々と文字列を表示しつづけ、キーが押されたら文字列を一掃します
#include "DxLib.h"
// WinMain関数
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
// DXライブラリ初期化
if( DxLib_Init() == -1 ) return 0;
// 描画先画面を裏画面にする
SetDrawScreen( DX_SCREEN_BACK ) ;
// なにかキーが押されるまでループ
while( CheckHitKeyAll() == 0 )
{
// Hello C World!と表示
printfDx( "Hello C World" ) ;
// 画面を青くする
DrawBox( 0 , 0 , 640 , 480 , GetColor( 0 , 0 , 255 ) , TRUE ) ;
// 出力した文字列を表示
ScreenFlip() ;
// Windows依存処理
if( ProcessMessage() == -1 ) break ;
}
// 画面の文字達を消す
clsDx() ;
// 画面にメッセージを表示
printfDx( "消えましたか?" ) ;
// 画面を赤くする
DrawBox( 0 , 0 , 640 , 480 , GetColor( 255 , 0 , 0 ) , TRUE ) ;
// 画面の状態を更新
ScreenFlip() ;
// キーが押されるまで待つ
WaitKey() ;
// DXライブラリの使用終了
DxLib_End() ;
return 0 ;
}
| ||||||||||||||||||||||||||||
| その他画面操作系関数 | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 解像度800×600、カラービット数32ビットで起動し、グラフィックを グラフィックを読み込み描画します
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int GHandle ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// 画面モードの変更
SetGraphMode( 800 , 600 , 32 ) ;
// test.bmpの読み込み
GHandle = LoadGraph( "test1.bmp" ) ;
// グラフィックの描画
DrawGraph( 0 , 0 , GHandle , FALSE ) ;
// キー待ち(『WaitKey』を使用)
WaitKey() ;
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル ありません | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 画面の半分を描画不可能にして画面全体に青い四角を描画しようとする
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int Cr ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// 描画可能領域セット
SetDrawArea( 0 , 0 , 320 , 480 ) ;
// 青色の値を取得
Cr = GetColor( 0 , 0 , 255 ) ;
// 青い四角形の描画
DrawBox( 0 , 0 , 640 , 480 , Cr , TRUE ) ;
// キー待ち(『WaitKey』を使用)
WaitKey() ;
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル ランダムな座標で1000個の点を描画した後画面を消去します
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int i ;
int Cr ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// 白色の値を取得
Cr = GetColor( 255 , 255 , 255 ) ;
// 1000個の点を描く
for( i = 0 ; i < 1000 ; i ++ )
{
// ランダムな位置に点を描く(『GetRand』を使用)
DrawPixel( GetRand( 640 ) , GetRand( 480 ) , Cr ) ;
}
WaitKey() ; // 結果を見るためにキー待ち(『WaitKey』を使用)
// 画面を初期化
ClearDrawScreen() ;
WaitKey() ; // キーの入力待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 灰色の線を描く
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int Cr ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// 灰色の値を取得
Cr = GetColor( 128 , 128 , 128 ) ;
// 線の描画
DrawLine( 120 , 150 , 300 , 240 , Cr );
WaitKey() ; // キーの入力待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 最初に表画面を描画先にしてランダムに四角形を描き続き、次に 描画先を裏画面にして同じことをしてみます。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int i ;
int Cr ;
int x , y ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// 描画先画面を表にする
SetDrawScreen( DX_SCREEN_FRONT ) ;
// 10000個四角形を描きます
for( i = 0 ; i < 10000 ; i ++ )
{
// ランダムな色を取得する『GetRand』使用
Cr = GetColor( GetRand( 255 ) , GetRand( 255 ) , GetRand( 255 ) ) ;
// ランダムな位置に四角形を描く
x = GetRand( 640 ) ;
y = GetRand( 480 ) ;
DrawBox( x , y , x + GetRand( 640 ) , y + GetRand( 480 ) , Cr , TRUE ) ;
}
WaitKey() ; // 結果を見るためにキー待ち(『WaitKey』を使用)
// 画面を初期化
ClearDrawScreen() ;
// 描画先画面を裏にする
SetDrawScreen( DX_SCREEN_BACK ) ;
// 10000個四角形を描きます
for( i = 0 ; i < 10000 ; i ++ )
{
// ランダムな色を取得する『GetRand』使用
Cr = GetColor( GetRand( 255 ) , GetRand( 255 ) , GetRand( 255 ) ) ;
// ランダムな位置に四角形を描く
x = GetRand( 640 ) ;
y = GetRand( 480 ) ;
DrawBox( x , y , x + GetRand( 640 ) , y + GetRand( 480 ) , Cr , TRUE ) ;
}
// 裏画面の内容を表画面に反映します
ScreenFlip() ;
WaitKey() ; // 結果を見るためにキー待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 『SetDrawScreen』関数の解説を参照してください | ||||||||||||||||||||||||||||
| マスク関係関数 | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル マスク画面を作成し、マスクデータを testMask.bmp から読みこみ、 マスク画面の左上に描画した後、画面を赤色で埋め尽くします。 するとマスクを描画した画面左上の部分だけ赤くなりません。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int MaskHandle ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// マスク画面を作成します
CreateMaskScreen() ;
// マスクデータをロードします
MaskHandle = LoadMask( "testMask.bmp" ) ;
// ロードしたマスクデータを画面の左上に描画します
DrawMask( 0 , 0 , MaskHandle , DX_MASKTRANS_NONE ) ;
// 画面いっぱいに赤い四角を描きます
DrawBox( 0 , 0 , 640 , 480 , GetColor( 255 , 0 , 0 ) , TRUE ) ;
// キーの入力待ちをします
WaitKey() ;
// マスク画面を削除します
DeleteMaskScreen() ;
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル CreateMaskScreen のサンプルを参照して下さい | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル testMask.bmp を読みこみ画面上のランダムな場所に10回描画し、その後 画面全体を青い四角で描画する。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int MaskHandle ;
int i ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// マスク画面を作成します
CreateMaskScreen() ;
// マスクデータをロードします
MaskHandle = LoadMask( "testMask.bmp" ) ;
// ロードしたマスクデータを画面のランダムな位置に10個描画します
for( i = 0 ; i < 10 ; i ++ )
DrawMask( GetRand( 640 ) , GetRand( 480 ) , MaskHandle , DX_MASKTRANS_NONE ) ;
// 画面いっぱいに青い四角を描きます
DrawBox( 0 , 0 , 640 , 480 , GetColor( 0 , 0 , 255 ) , TRUE ) ;
// キーの入力待ちをします
WaitKey() ;
// マスク画面を削除します
DeleteMaskScreen() ;
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル testMask2.bmp を 横 8 縦 2 、分割される一つの画像サイズを 8 × 16 、分割 画像の総数 16 として読みこみ、得られたマスクハンドルを配列に保存しその後 0から順番に画面全体にマスクグラフィックを描画しアニメーションさせます。 いちいち画面を消去するので裏画面を使用しています。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int MaskHandle[ 16 ] ;
int i ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// 描画先画面を裏画面にします
SetDrawScreen( DX_SCREEN_BACK ) ;
// マスク画面を作成します
CreateMaskScreen() ;
// マスクデータをロードします
LoadDivMask( "testMask2.bmp", 16, 8, 2, 8, 16, MaskHandle ) ;
// マスクを画面全体にタイル上に描画しアニメーションさせます
for( i = 0 ; i < 16 ; i ++ )
{
// 画面初期化
ClearDrawScreen() ;
// 画面全体にタイル上描画
DrawFillMask( 0 , 0 , 640 , 480 , MaskHandle[ i ] ) ;
// 画面いっぱいに青い四角を描きます
DrawBox( 0 , 0 , 640 , 480 , GetColor( 0 , 0 , 255 ) , TRUE ) ;
// 時間待ち
WaitTimer( 100 ) ;
// 裏画面の内容を表画面に反映させる
ScreenFlip() ;
}
// 最後の時間待ち
WaitTimer( 1000 ) ;
// マスク画面を削除します
DeleteMaskScreen() ;
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル CreateMaskScreen 関数のサンプルを参照して下さい。 | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル (100,200)-(640,480)の領域を testMask.bmp から構築したマスクで 埋めます。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int MaskHandle ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// マスク画面を作成します
CreateMaskScreen() ;
// マスクデータをロードします
MaskHandle = LoadMask( "testMask.bmp" ) ;
// (100,200)-(400,400)の領域にマスクをタイル上に並べて描画します
DrawFillMask( 100 , 200 , 400 , 400 , MaskHandle ) ;
// 画面いっぱいに緑の四角を描画
DrawBox( 0 , 0 , 640 , 480 , GetColor( 0 , 255 , 0 ) , TRUE ) ;
// キー入力待ち
WaitKey() ;
// マスクを削除します
DeleteMask( MaskHandle ) ;
// マスク画面を削除します
DeleteMaskScreen() ;
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル DrawFillMask 関数のサンプルを参照して下さい | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル ありません | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル DrawFillMask 関数で一部マスクを適応し、緑の四角を描画した後、 マスク画面を白で覆い尽くしてから再び緑の四角を描画します
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int MaskHandle ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// マスク画面を作成します
CreateMaskScreen() ;
// マスクデータをロードします
MaskHandle = LoadMask( "testMask.bmp" ) ;
// (100,200)-(400,400)の領域にマスクをタイル上に並べて描画します
DrawFillMask( 100 , 200 , 400 , 400 , MaskHandle ) ;
// 画面いっぱいに緑の四角を描画
DrawBox( 0 , 0 , 640 , 480 , GetColor( 0 , 255 , 0 ) , TRUE ) ;
// キー入力待ち
WaitKey() ;
// マスク画面を白で覆い尽くします
FillMaskScreen( 1 ) ;
// もう一度画面いっぱいに緑の四角を描きます
DrawBox( 0 , 0 , 640 , 480 , GetColor( 0 , 255 , 0 ) , TRUE ) ;
// キー入力待ち
WaitKey() ;
// マスクを削除します
DeleteMask( MaskHandle ) ;
// マスク画面を削除します
DeleteMaskScreen() ;
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル まず testMask.bmp を DrawFillMask 関数をもって画面全体に描画します。 その後緑の四角を画面全体に、以後マスク画面を無効にして同じことを、更に再び マスク画面を有効にして再度緑の四角を画面に描画します。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int MaskHandle ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// マスク画面を作成します
CreateMaskScreen() ;
// マスクデータをロードします
MaskHandle = LoadMask( "testMask.bmp" ) ;
// 画面全体にマスクをタイル上に並べて描画します
DrawFillMask( 0 , 0 , 640 , 480 , MaskHandle ) ;
// 画面いっぱいに緑の四角を描画
DrawBox( 0 , 0 , 640 , 480 , GetColor( 0 , 255 , 0 ) , TRUE ) ;
ScreenFlip() ;
// キー入力待ち
WaitKey() ;
// マスク画面を無効にします
SetUseMaskScreenFlag( FALSE );
// もう一度画面いっぱいに緑の四角を描きます
ClearDrawScreen() ; // 画面初期化
DrawBox( 0 , 0 , 640 , 480 , GetColor( 0 , 255 , 0 ) , TRUE ) ;
ScreenFlip() ;
// キー入力待ち
WaitKey() ;
// マスク画面を有効にします
SetUseMaskScreenFlag( TRUE ) ;
// 再び一度画面いっぱいに緑の四角を描きます
ClearDrawScreen() ; // 画面初期化
DrawBox( 0 , 0 , 640 , 480 , GetColor( 0 , 255 , 0 ) , TRUE ) ;
ScreenFlip() ;
// キー入力待ち
WaitKey() ;
// マスクを削除します
DeleteMask( MaskHandle ) ;
// マスク画面を削除します
DeleteMaskScreen() ;
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル MakeMask 関数で 16 × 16 の大きさの空マスクを作成し、プログラム中で 動的に作成、変更を加えたマスクデータを SetDataToMask 関数 で順次転送、 そしてそのマスクデータを持ってマスク画面を埋め尽くし、マスクの結果を 確認するために画面いっぱいに白い四角を描画しています。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int MaskHandle ;
unsigned char MaskData[ 16 ][ 16 ] ;
int i , j ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// 描画先を裏画面にします
SetDrawScreen( DX_SCREEN_BACK ) ;
// マスク画面を作成します
CreateMaskScreen() ;
// 空のマスクを作成します
MaskHandle = MakeMask( 16 , 16 ) ;
// マスクデータを白で埋めます
for( i = 0 ; i < 16 ; i ++ )
for( j = 0 ; j < 16 ; j ++ )
MaskData[ i ][ j ] = 0xff ;
// ループ
for( i = 0 ; i < 16 ; i ++ )
{
// 画面を初期化
ClearDrawScreen() ;
// マスクのデータを一部変更
for( j = 0 ; j < 16 ; j ++ )
MaskData[ i ][ j ] = 0 ;
// マスクにデータをセット
SetDataToMask( 16 , 16 , MaskData , MaskHandle ) ;
// マスク画面をセットしたマスクデータで埋めます
DrawFillMask( 0 , 0 , 640 , 480 , MaskHandle ) ;
// 白の四角を画面全体に描画します
DrawBox( 0 , 0 , 640 , 480 , GetColor( 255 , 255 , 255 ) , TRUE ) ;
// 裏画面の内容を表画面に反映させます
ScreenFlip() ;
// 時間待ち
WaitTimer( 100 ) ;
}
// マスクを削除します
DeleteMask( MaskHandle ) ;
// マスク画面を削除します
DeleteMaskScreen() ;
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 特になし | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル MakeMask 関数のサンプルを参照して下さい | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル マスクのデータを直接マスク画面の左上に転送し、そのつど 画面全体に白い四角を描画し、マスクの状態を確認します。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
unsigned char MaskData[ 16 ][ 16 ] ;
int i , j ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// 描画先を裏画面にします
SetDrawScreen( DX_SCREEN_BACK ) ;
// マスク画面を作成します
CreateMaskScreen() ;
// マスクデータを白で埋めます
for( i = 0 ; i < 16 ; i ++ )
for( j = 0 ; j < 16 ; j ++ )
MaskData[ i ][ j ] = 0xff ;
// ループ
for( i = 0 ; i < 16 ; i ++ )
{
// 画面を初期化
ClearDrawScreen() ;
// マスクのデータを一部変更
for( j = 0 ; j < 16 ; j ++ )
MaskData[ i ][ j ] = 0 ;
// マスクのデータを直接画面に転送
DrawMaskToDirectData( 0 , 0 , 16 , 16 , MaskData , DX_MASKTRANS_NONE ) ;
// 白の四角を画面全体に描画します
DrawBox( 0 , 0 , 640 , 480 , GetColor( 255 , 255 , 255 ) , TRUE ) ;
// 裏画面の内容を表画面に反映させます
ScreenFlip() ;
// 時間待ち
WaitTimer( 100 ) ;
}
// マスク画面を削除します
DeleteMaskScreen() ;
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル ダイレクトにマスク画面に動的に生成した 16 × 16 の大きさのマスク データを画面全体に描画し、その結果を確認するために描画毎に画面全体に 白い四角を描画します。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
unsigned char MaskData[ 16 ][ 16 ] ;
int i , j ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// 描画先を裏画面にします
SetDrawScreen( DX_SCREEN_BACK ) ;
// マスク画面を作成します
CreateMaskScreen() ;
// マスクデータを白で埋めます
for( i = 0 ; i < 16 ; i ++ )
for( j = 0 ; j < 16 ; j ++ )
MaskData[ i ][ j ] = 0xff ;
// ループ
for( i = 0 ; i < 16 ; i ++ )
{
// 画面を初期化
ClearDrawScreen() ;
// マスクのデータを一部変更
for( j = 0 ; j < 16 ; j ++ )
MaskData[ i ][ j ] = 0 ;
// マスクのデータを直接画面全体に転送
DrawFillMaskToDirectData( 0 , 0 , 640 , 480 , 16 , 16 , MaskData ) ;
// 白の四角を画面全体に描画します
DrawBox( 0 , 0 , 640 , 480 , GetColor( 255 , 255 , 255 ) , TRUE ) ;
// 裏画面の内容を表画面に反映させます
ScreenFlip() ;
// 時間待ち
WaitTimer( 100 ) ;
}
// マスク画面を削除します
DeleteMaskScreen() ;
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル 画面に色々な色の矩形を描き、それにマスク処理を施し効果をためします。
#include "DxLib.h"
// WinMain関数
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
unsigned char m[8][8] ;
int i, j ;
// DXライブラリの初期化
if( DxLib_Init()==-1 ) return -1;
// マスクの模様を作成
for( i = 0 ; i < 8 ; i ++ )
for( j = 0 ; j < 8 ; j ++ )
m[i][j] = ( ( i + j ) & 1 ) * 0xff ;
// 画面を灰色で埋める
DrawBox( 0, 0, 640, 480, GetColor( 128, 128, 128 ), TRUE ) ;
// 白、黒、赤、緑、青の色の矩形を描画
DrawBox( 10, 30, 200, 200, GetColor( 255, 255, 255 ), TRUE ) ;
DrawBox( 60, 20, 400, 120, GetColor( 0, 0, 0 ), TRUE ) ;
DrawBox( 100, 200, 410, 450, GetColor( 255, 0, 0 ), TRUE ) ;
DrawBox( 220, 80, 580, 160, GetColor( 0, 255, 0 ), TRUE ) ;
DrawBox( 400, 300, 630, 480, GetColor( 0, 0, 255 ), TRUE ) ;
// キー入力待ち
WaitKey() ;
// マスクスクリーンの作成
CreateMaskScreen() ;
// マスクスクリーンを有効にする
SetUseMaskScreenFlag( TRUE ) ;
// マスクをマスクスクリーン全体に描画
DrawFillMaskToDirectData( 0, 0, 640, 480, 8, 8, m ) ;
// 同じ工程を繰り返す(黒い四角が消えてしまっているはず)
ClearDrawScreen() ;
DrawBox( 0, 0, 640, 480, GetColor( 128, 128, 128 ), TRUE ) ;
DrawBox( 10, 30, 200, 200, GetColor( 255, 255, 255 ), TRUE ) ;
DrawBox( 60, 20, 400, 120, GetColor( 0, 0, 0 ), TRUE ) ;
DrawBox( 100, 200, 410, 450, GetColor( 255, 0, 0 ), TRUE ) ;
DrawBox( 220, 80, 580, 160, GetColor( 0, 255, 0 ), TRUE ) ;
DrawBox( 400, 300, 630, 480, GetColor( 0, 0, 255 ), TRUE ) ;
// キー入力待ち
WaitKey() ;
// 透過色を紫にして同じ工程を繰り返す(黒い四角が消えないはず)
ClearDrawScreen() ;
SetMaskTransColor( GetColor( 255, 0, 255 ) ) ;
DrawBox( 0, 0, 640, 480, GetColor( 128, 128, 128 ), TRUE ) ;
DrawBox( 10, 30, 200, 200, GetColor( 255, 255, 255 ), TRUE ) ;
DrawBox( 60, 20, 400, 120, GetColor( 0, 0, 0 ), TRUE ) ;
DrawBox( 100, 200, 410, 450, GetColor( 255, 0, 0 ), TRUE ) ;
DrawBox( 220, 80, 580, 160, GetColor( 0, 255, 0 ), TRUE ) ;
DrawBox( 400, 300, 630, 480, GetColor( 0, 0, 255 ), TRUE ) ;
// キー入力待ち
WaitKey() ;
// DXライブラリの使用終了
DxLib_End();
// ソフト終了
return 0;
}
| ||||||||||||||||||||||||||||
| 動画関係 | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル test.aviを等倍で再生する(ボタン押しキャンセルなし)
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
PlayMovie( "test.avi" , 1 , DX_MOVIEPLAYTYPE_NORMAL ) ;
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル ??.mpg を画面いっぱいに拡大して再生します。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int MovieGraphHandle ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// ムービーファイルをロードします。
MovieGraphHandle = LoadGraph( "??.mpg" ) ;
// ムービーを再生状態にします
PlayMovieToGraph( MovieGraphHandle ) ;
// ループ、GetMovieStateToGraph 関数はムービーの再生状態を得る関数です
// 戻り値が1の間は再生状態ですのでループを続けます
while( ProcessMessage() == 0 && GetMovieStateToGraph( MovieGraphHandle ) == 1 )
{
// ムービー映像を画面いっぱいに描画します
DrawExtendGraph( 0 , 0 , 640 , 480 , MovieGraphHandle , FALSE ) ;
// ウエイトをかけます、あまり速く描画すると画面がちらつくからです
WaitTimer( 17 ) ;
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル ありません | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル ??.avi ファイルを5秒目から再生します。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int MovieGraphHandle ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// ムービーファイルをロードします。
MovieGraphHandle = LoadGraph( "??.mpg" ) ;
// ムービーの再生位置を5秒目に変更します
SeekMovieToGraph( MovieGraphHandle , 5000 ) ;
// ムービーを再生状態にします
PlayMovieToGraph( MovieGraphHandle ) ;
// ループ、GetMovieStateToGraph 関数はムービーの再生状態を得る関数です
// 戻り値が1の間は再生状態ですのでループを続けます
while( ProcessMessage() == 0 && GetMovieStateToGraph( MovieGraphHandle ) == 1 )
{
// ムービー映像を画面いっぱいに描画します
DrawExtendGraph( 0 , 0 , 640 , 480 , MovieGraphHandle , FALSE ) ;
// ウエイトをかけます、あまり速く描画すると画面がちらつくからです
WaitTimer( 17 ) ;
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
サンプル PlayMovieToGraph 関数のサンプルを参照して下さい | ||||||||||||||||||||||||||||
|
戻る | ||||||||||||||||||||||||||||