図形描画関数

宣言 int DrawLine( int x1 , int y1 , int x2 , int y2 , unsigned int Color ) ;

概略線を描画

引数 x1 , y1 : 描画する線の起点座標
x2 , y2 : 描画する線の終点座標
Color  : 描く線の色
戻り値 0:成功
 -1:エラー発生

解説  画面上に点( x1 , y1 )と点( x2 , y2 )を結ぶ線をColorで指定した色で描きます。 (終端座標は描かれないので、実際には描き切りたい座標+1の値を指定する必要があります)
 パソコン画面は一般に画面左上が座標( 0 , 0 )で、 画面左から右に向かう方向が x のプラス方向の 画面上から下に向かう方向が y のプラス方向となります。 そして標準では画面の右端の x 座標値は 639 画面最下の y 座標は 479 となります。 この最大値は関数『SetGraphMode』 によって変更する事が出来ます。
 Colorの値は画面の色の表現できる色の数によってかわってきます。
この色の値はライブラリの関数『GetColor』を使って取得する事をお勧めします。

(注) …  なおこの関数は±1ドットの単位で描画位置に誤差が
    生じます、その誤差はグラフィックボードの機種、描く
    線の方向、長さによって様々なのでライブラリ側での
    補正は行っていませんのでご了承下さい。
   (3D機能を使っていない場合は正しく描画されます
    (3D機能を使わない方法については
   『SetUse3DFlag』関数を参照して下さい))

サンプル

 画面左上から右下にかけて真っ白の線を描きます

Windows用
#include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { unsigned 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 ; // ソフトの終了 }

Android用
Windows用のプログラムの int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )int android_main( void ) に置き換える以外は Windows用のプログラムと同じです。




宣言 int DrawLineAA( float x1 , float y1 , float x2 , float y2 , unsigned int Color ) ;

概略線を描画(アンチエイリアス効果付き)

引数 x1 , y1 : 描画する線の起点座標
x2 , y2 : 描画する線の終点座標
Color  : 描く線の色
戻り値 0:成功
 -1:エラー発生

解説  『DrawLine』 で描かれる線分はアンチエイリアス効果の無いくっきりした線( 悪く言えばジャギジャギした線 )ですが、 この『DrawLineAA』で描かれる線分はアンチエイリアス効果の付いた滑らかな線となります。
 ドット単位のくっきりした線分を描画したい場合は『DrawLine』を、滑らかな線分を描画したい場合は『DrawLineAA』を使用してください。

 その他の線分描画に関する解説は『DrawLine』の解説を参照してください。

サンプル

 画面左上から右下にかけて真っ白の線を描きます

Windows用
#include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { unsigned int Cr ; if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } Cr = GetColor( 255 , 255 , 255 ) ; // 白色の値を取得 DrawLineAA( 0.0f , 0.0f , 640.0f , 480.0f , Cr ) ; // 線を描画 WaitKey() ; // キーの入力待ち(『WaitKey』を使用) DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }

Android用
Windows用のプログラムの int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )int android_main( void ) に置き換える以外は Windows用のプログラムと同じです。




宣言 int DrawBox( int x1 , int y1 , int x2 , int y2 ,
       unsigned int Color , int FillFlag ) ;


概略四角形を描画

引数 x1 , y1 : 描画する四角形の左上の頂点座標
x2 , y2 : 描画する四角形の右下+1の頂点座標
Color  : 描画する四角形の色
FillFlag : 四角の中身を塗りつぶすか、のフラグ。TRUEで塗り
     つぶし、FALSEで塗りつぶさない
戻り値 0:成功
 -1:エラー発生

解説  ( x1, y1 )を四角形左上の頂点、( x2 - 1, y2 - 1 )を右下の頂点とする四角形をColorで指定された色で描画します。
(パソコン画面の座標の持ち方、色の指定のし方についての説明はすぐ上のDrawLine関数の解説を参照してください。)
 FillFlagをTRUEにすると四角形の中身もColorで指定した色で塗りつぶし、FALSEを指定すると輪郭のみを描画します。 (TRUEと言うのは#defineマクロで定義された定数で1と同義です。FALSEについては0と同義です)

<<注意>>
 …何故四角形の右下の頂点が( x2 - 1, y2 - 1 )なのかと申しますと、単純に ( x2, y2 ) が右下の頂点だと、ちょっと面倒なことになるからです。
 例えば、( x2, y2 ) が右下の頂点だとしたときに、縦横32ドットの大きさを持つ四角形を描こうとしたら

  DrawBox( 0, 0, 32, 32, GetColor( 255,255,255 ), TRUE ) ;

 ではなく

  DrawBox( 0, 0, 31, 31, GetColor( 255,255,255 ), TRUE ) ;

 と書かなければいけません。つまり、ある地点から任意のサイズの四角形を指定したい時に常に「-1」してやる必要があるのです。
 どちらの方が直感的か、と言われると難しいところですが、慣れてきたときの扱いやすさは( x2 - 1, y2 - 1 )の方が上ですし、 他のライブラリも右下の頂点を( x2 - 1, y2 - 1 )としていることが多いので、 DXライブラリもそれに習って右下の頂点は( x2 - 1, y2 - 1 )としているわけです。
サンプル

 画面中心に青い四角を描き、四角形の中も塗りつぶします

Windows用
#include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { unsigned 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 ; // ソフトの終了 }

Android用
Windows用のプログラムの int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )int android_main( void ) に置き換える以外は Windows用のプログラムと同じです。




宣言 int DrawBoxAA( float x1 , float y1 , float x2 , float y2 ,
       unsigned int Color , int FillFlag ) ;


概略四角形を描画(アンチエイリアス効果付き)

引数 x1 , y1 : 描画する四角形の左上の頂点座標
x2 , y2 : 描画する四角形の右下+1の頂点座標
Color  : 描画する四角形の色
FillFlag : 四角の中身を塗りつぶすか、のフラグ。TRUEで塗り
     つぶし、FALSEで塗りつぶさない
戻り値 0:成功
 -1:エラー発生

解説  『DrawBox』 では四角形の描画座標を int型(整数型)で指定するので 100.5 や 61.2 といった小数点以下の値を含む座標を指定することができませんが、 この『DrawBoxAA』では座標の値を float型(浮動小数点型)で指定するので、小数点以下の値を含む座標を指定することができます。

 小数点以下の座標の指定が必要が無い場合は『DrawBox』を、小数点以下の座標の指定が必要な場合は『DrawBoxAA』を使用してください。

 その他の線分描画に関する解説は『DrawBox』の解説を参照してください。

サンプル

 画面中心に青い四角を描き、四角形の中も塗りつぶします

Windows用
#include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { unsigned int Cr ; if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } Cr = GetColor( 0 , 0 , 255 ) ; // 青色の値を取得 DrawBoxAA( 0.0f , 0.0f , 640.0f , 480.0f , Cr , TRUE) ; // 四角形を描画 WaitKey() ; // キーの入力待ち(『WaitKey』を使用) DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }

Android用
Windows用のプログラムの int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )int android_main( void ) に置き換える以外は Windows用のプログラムと同じです。




宣言int DrawCircle( int x , int y , int r , unsigned int Color, int FillFlag ) ;

概略円の描画

引数 x , y : 描く円の中心座標
r   : 描く円の半径
Color : 円の色
FillFlag : TRUE(1の意)で円の中身も塗りつぶし、FALSE(0の意)で輪郭のみ
戻り値 0:成功
 -1:エラー発生

解説  ( x , y )を円の中心座標とした半径 r の円を描きます。
 円は Color で指定した色で描かれ、FillFlag にTRUEを指定した場合は中身を塗りつぶし、FALSE を指定した場合は輪郭のみ描かれます。
(パソコン画面上での座標の取り方、色の指定のし方は DrawLine の解説を参照してください。)

サンプル

 画面中心に半径150の青い円を描きます、中身は塗りつぶしません。

Windows用
#include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { unsigned int Cr ; if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } Cr = GetColor( 0 , 0 , 255 ) ; // 青色の値を取得 // 円を描画 DrawCircle( 320 , 240 , 150 , Cr , FALSE ) ; WaitKey() ; // キーの入力待ち(『WaitKey』を使用) DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }

Android用
Windows用のプログラムの int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )int android_main( void ) に置き換える以外は Windows用のプログラムと同じです。




宣言int DrawCircleAA( float x , float y , float r , int posnum , unsigned int Color, int FillFlag ) ;

概略円の描画(アンチエイリアス効果付き)

引数 x , y : 描く円の中心座標
r   : 描く円の半径
posnum : 円を形成する頂点の数
Color : 円の色
FillFlag : TRUE(1の意)で円の中身も塗りつぶし、FALSE(0の意)で輪郭のみ
戻り値 0:成功
 -1:エラー発生

解説  『DrawCircle』 で描かれる円はアンチエイリアス効果の無いくっきりした線( 悪く言えばジャギジャギした線 )で描かれますが、 この『DrawCircleAA』で描かれる円はアンチエイリアス効果の付いた滑らかな線で描かれます。
 ドット単位のくっきりした円を描画したい場合は『DrawCircle』を、滑らかな円を描画したい場合は『DrawCircleAA』を使用してください。

 因みに、『DrawCircle』と異なり『DrawCircleAA』は厳密には引数 posnum で指定した正多角形を描画する関数です、 引数 posnum の値を大きくすればするほど角の多い多角形になり、より円に近くなります。( ただ、posnum の値の大きさに比例して描画負荷も高くなるので注意してください )

 その他の円の描画に関する解説は『DrawCircle』の解説を参照してください。

サンプル

 画面中心に半径150の青い円を描きます、中身は塗りつぶしません。

Windows用
#include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { unsigned int Cr ; if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } Cr = GetColor( 0 , 0 , 255 ) ; // 青色の値を取得 // 円を描画 DrawCircleAA( 320.0f , 240.0f , 150.0f , 32 , Cr , FALSE ) ; WaitKey() ; // キーの入力待ち(『WaitKey』を使用) DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }

Android用
Windows用のプログラムの int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )int android_main( void ) に置き換える以外は Windows用のプログラムと同じです。




宣言int DrawOval( int x , int y , int rx , int ry , unsigned int Color , int FillFlag ) ;

概略楕円を描く

引数 x , y : 描く楕円の中心座標
rx,ry : 描く楕円のX軸に対する半径とY軸に対する半径
Color : 楕円の色
FillFlag : TRUE(1の意)で楕円の中身も塗りつぶし、FALSE(0の意)で輪郭のみ
戻り値 0:成功
 -1:エラー発生

解説  ( x , y )を楕円の中心座標とした半径 rx , ry の楕円を描きます。
楕円はColorで指定した色で描かれ、FillFlag にTRUEを指定した場合は中身を塗りつぶし、FALSE を指定した場合は輪郭のみ描かれます。
(パソコン画面上での座標の取り方、色の指定のし方は DrawLine の解説を参照してください。)

サンプル

 画面中心に半径 (150,100) の青い楕円を描きます。中身も青色で塗りつぶします

Windows用
#include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { unsigned 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 ; // ソフトの終了 }

Android用
Windows用のプログラムの int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )int android_main( void ) に置き換える以外は Windows用のプログラムと同じです。




宣言int DrawOvalAA( float x , float y , float rx , float ry , int posnum , unsigned int Color , int FillFlag ) ;

概略楕円を描く(アンチエイリアス効果付き)

引数 x , y : 描く楕円の中心座標
rx,ry : 描く楕円のX軸に対する半径とY軸に対する半径
posnum : 楕円を形成する頂点の数
Color : 楕円の色
FillFlag : TRUE(1の意)で楕円の中身も塗りつぶし、FALSE(0の意)で輪郭のみ
戻り値 0:成功
 -1:エラー発生

解説  『DrawOval』 で描かれる楕円はアンチエイリアス効果の無いくっきりした線( 悪く言えばジャギジャギした線 )で描かれますが、 この『DrawOvalAA』で描かれる楕円はアンチエイリアス効果の付いた滑らかな線で描かれます。
 ドット単位のくっきりした楕円を描画したい場合は『DrawOval』を、滑らかな楕円を描画したい場合は『DrawOvalAA』を使用してください。

 因みに、『DrawOval』と異なり『DrawOvalAA』は厳密には引数 posnum で指定した多角形を描画する関数です、 引数 posnum の値を大きくすればするほど角の多い多角形になり、より楕円に近くなります。( ただ、posnum の値の大きさに比例して描画負荷も高くなるので注意してください )

 その他の楕円の描画に関する解説は『DrawOval』の解説を参照してください。

サンプル

 画面中心に半径 (150,100) の青い楕円を描きます。中身も青色で塗りつぶします

Windows用
#include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { unsigned int Cr ; if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } Cr = GetColor( 0 , 0 , 255 ) ; // 青色の値を取得 // 楕円を描画 DrawOvalAA( 320.0f , 240.0f , 150.0f , 100.0f , 32 , Cr , TRUE ) ; WaitKey() ; // キーの入力待ち((7-3)『WaitKey』を使用) DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }

Android用
Windows用のプログラムの int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )int android_main( void ) に置き換える以外は Windows用のプログラムと同じです。




宣言 int DrawTriangle( int x1, int y1, int x2, int y2,
              int x3, int y3, unsigned int Color , int FillFlag ) ;


概略三角形の描画

引数 int x1, y1, x2, y2, x3, y3 : 三角形を描く3つの座標
unsigned int Color : 描画に使う色
int FillFlag : 三角形の中身を塗りつぶすかフラグ
          (TRUE:塗りつぶす FALSE:塗りつぶさない)
戻り値 0:成功
 -1:エラー発生

解説  ( x1, y1 ), ( x2, y2 ), ( x3, y3 )の座標を3点とした三角形を Color で指定した色で描画します。
 なお FillFlag が TRUE の場合は三角形の中身を塗りつぶし、FALSE の場合は三角形の輪郭のみを描画します。
(パソコン画面上での座標の取り方、色の指定のし方はDrawLine の解説を参照してください。)

サンプル

 画面中心に黄色の三角形を描画し、中身を塗りつぶします
Windows用
#include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { unsigned 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 ; }

Android用
Windows用のプログラムの int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )int android_main( void ) に置き換える以外は Windows用のプログラムと同じです。




宣言 int DrawTriangleAA( float x1, float y1, float x2, float y2,
              float x3, float y3, unsigned int Color , int FillFlag ) ;


概略三角形の描画(アンチエイリアス効果付き)

引数 int x1, y1, x2, y2, x3, y3 : 三角形を描く3つの座標
unsigned int Color : 描画に使う色
int FillFlag : 三角形の中身を塗りつぶすかフラグ
          (TRUE:塗りつぶす FALSE:塗りつぶさない)
戻り値 0:成功
 -1:エラー発生

解説  『DrawTriangle』 で描かれる三角形はアンチエイリアス効果の無いくっきりした線( 悪く言えばジャギジャギした線 )で描かれますが、 この『DrawTriangleAA』で描かれる三角形はアンチエイリアス効果の付いた滑らかな線で描かれます。
 ドット単位のくっきりした三角形を描画したい場合は『DrawTriangle』を、滑らかな三角形を描画したい場合は『DrawTriangleAA』を使用してください。

 その他の三角形の描画に関する解説は『DrawTriangle』の解説を参照してください。

サンプル

 画面中心に黄色の三角形を描画し、中身を塗りつぶします
Windows用
#include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { unsigned int Cr ; // DXライブラリ初期化 if( DxLib_Init() == -1 ) return -1; // 黄色の値を取得 Cr = GetColor( 255 , 255 , 0 ) ; // 三角形を描画 DrawTriangleAA( 320.0f, 100.0f, 160.0f, 420.0f, 480.0f, 420.0f, Cr, TRUE ) ; // キーの入力待ち((7-3)『WaitKey』を使用) WaitKey() ; // DXライブラリ使用の終了処理 DxLib_End() ; // ソフトの終了 return 0 ; }

Android用
Windows用のプログラムの int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )int android_main( void ) に置き換える以外は Windows用のプログラムと同じです。




宣言int DrawPixel( int x , int y , unsigned int Color ) ;

概略点を描画する

引数 x , y : 点を描画する座標
Color : 描画する点の色
戻り値 0:成功
 -1:エラー発生

解説  座標( x , y )にColorで指定した色で点を描画します。
(パソコン画面上での座標のとり方、色の指定方法は『DrawLine』 の解説を参照してください)

サンプル

 画面中心に緑の点を描画します

Windows用
#include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { unsigned 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 ; // ソフトの終了 }

Android用
Windows用のプログラムの int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )int android_main( void ) に置き換える以外は Windows用のプログラムと同じです。




宣言unsigned int GetPixel( int x , int y ) ;

概略指定点の色を取得

引数x , y : 色を取得する点の座標
戻り値指定点の色コード

解説  描画先になっている画面の指定の座標( x , y )の点の色コードを得ます。 この関数はとても処理に時間がかかるので多用は禁物です。


使用例
  座標( 120 , 80 )にある点の色コードを得てint型変数 Cr に保存する
unsigned int Cr ; Cr = GetPixel( 120 , 80 ) ;

サンプル

 なし






戻る