LoginSignup
0
0

矩形を描画する

Last updated at Posted at 2024-02-22

関連記事

開発環境

  • Windows11
  • Visual Studio 2022
  • DXライブラリ Ver3.24d

矩形の描画

DrawPixel関数とループを組み合わせることで矩形(すべての角が直角の四辺形)を描くこともできますが、DXライブラリには矩形を描画するDrawBox関数が用意されています。

#include "DxLib.h"

int WINAPI WinMain( _In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpcmdLine, _In_ int nCmdShow )
{
    // ウィンドウモードで起動
    ChangeWindowMode( TRUE );

    // DXライブラリの初期化
    if( DxLib_Init() == -1 )
    {
        // -1ならエラーとして終了
        return 0;
    }

    // 矩形の描画
    DrawBox( 100, 100, 200, 200, 0xFFFFFF, TRUE );

    // プログラムの一時停止
    WaitKey();

    // DXライブラリの破棄
    DxLib_End();

    return 0;
}

実行結果

DrawBox関数の引数

DrawBox関数の引数を日本語にすると以下のような形になります。

DrawBox( 左上頂点のX座標, 左上頂点のY座標, 右下頂点のX座標, 右下頂点のY座標, 色, 塗りつぶしフラグ );

座標

第一引数から第四引数までが座標の指定です。この値で描画する矩形の位置や大きさが決定します。

第五引数は矩形の色の指定です。サンプルプログラムでは16進数(0xFFFFFF)で指定し、この場合は白になります。16進数による色の表現については関連記事のピクセルの描画と座標・色の考え方で紹介しています。

塗りつぶしフラグ

第六引数は塗りつぶしのフラグでTRUEFALSEを指定します。TRUEにすると単色で矩形が塗りつぶされます。FALSEを指定すると輪郭のみ描画されます。

重なったとき

矩形が重なるような位置に描画されたときは、後から描画した矩形が前面に表示されます。

#include "DxLib.h"

int WINAPI WinMain( _In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpcmdLine, _In_ int nCmdShow )
{
    // ウィンドウモードで起動
    ChangeWindowMode( TRUE );

    // DXライブラリの初期化
    if( DxLib_Init() == -1 )
    {
        // -1ならエラーとして終了
        return 0;
    }

    // 矩形の描画
    DrawBox( 50, 50, 150, 150, 0xFFFF00, TRUE );   // 黄色の矩形
    DrawBox( 100, 100, 200, 200, 0xFF0000, TRUE ); // 赤の矩形

    // プログラムの一時停止
    WaitKey();

    // DXライブラリの破棄
    DxLib_End();

    return 0;
}

実行結果

DrawPixel関数やその他の描画関数を使用した場合も、要素が重なった際には後に描画された要素が前面になるように表示されます。

座標の指定を逆にしたとき

通常、左上の座標が右下の座標より数値的に小さくなるような値は渡しませんが、渡すとどうなるか検証しました。

// 右下の座標の方が小さくなるように指定
DrawBox( 100, 100, 0, 0, 0xFFFFFF, TRUE );

実行結果

右下座標と左上座標の範囲が問題なく塗りつぶされました。

DXライブラリのソースコードを確認したところ、左上と右下の座標は描画前に大小比較を行って必要なら入れ替えているようです。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0