1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ピクセルの描画と座標・色の考え方

Last updated at Posted at 2024-02-21

関連記事

開発環境

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

1ピクセルの表示

まずは1ピクセルだけ画面に表示します。DrawPixel関数は指定した座標にピクセル単位で色を描画するための関数です。

#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;
    }

    // 1ピクセル描画
    DrawPixel( 100, 50, 0xFFFFFF );

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

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

    return 0;
}

実行しても何も表示されていないように見えますが、よく見ると1ピクセル白色が塗られています。

座標の考え方

描画された位置はDrawPixel関数の第一・第二引数で決まります。第一引数は描画するピクセルのX座標、第二引数はY座標を表しています。

// X座標 100 、Y座標 50 の位置にピクセルを描画
DrawPixel( 100, 50, 0xFFFFFF );

DXライブラリでは左上が原点( 0, 0 )になっています。X座標は右方向がプラス、Y座標は下方向がプラスです。

ウィンドウの大きさ

ウィンドウはデフォルトで横 640、縦 480 という大きさになっています。これはゲームを遊ぶエリア(画像だと黒背景の部分)のサイズで、タイトルバーなどは含みません。

描画座標はウィンドウの大きさに収まる範囲で値を指定してください。これより大きな値やマイナスの値を指定することもできますが、画面にピクセルは表示されません。

色の指定

DrawPixel関数の第三引数は表示するピクセルの色を指定しています。

// 0xFFFFFF の部分はピクセル色の指定
DrawPixel( 100, 50, 0xFFFFFF );

C言語やC++言語では数値の先頭に0xを付けることで、その値を16進数で表現することができます。色を表す際には16進数の各2桁がそれぞれ赤(R)、緑(G)、青(B)の強さを決めています。

FFは10進数で255に相当し、各色は0から255までの256段階の強さを表現できます。この256段階は光の三原色を基にしたもので、すべての色をFFにすると白に、00にすると黒になります。例えば、0xFFFF00のように、赤と緑をFF、青を00に設定すると、これらが混ざり合って黄色になります。

// 黄色いピクセルを描画
DrawPixel( 100, 50, 0xFFFF00 );

わかりにくかったので実行結果を拡大しました。

呼び出し回数

DXライブラリには様々な描画系の関数がありますが、基本的に何度呼び出しても問題ありません。例えば今回のDrawPixel関数も、ループと組み合わせれば線を書くことができます。

#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;
    }

    // DrawPixel関数を100回呼び出す
    for( int i = 0; i < 100; i++ )
    {
        // 1ピクセル描画
        DrawPixel( i, 50, 0xFFFF00 );
    }
    
    // プログラムの一時停止
    WaitKey();

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

    return 0;
}

実行結果

おわりに

座標や色の扱いはゲーム開発の基本となる考え方です。今回は1ピクセルだけ色を塗るというシンプルなプログラムでしたが、これらの基礎を理解することで、より複雑な描画や表現に取り組んでいけるようになります。

参考

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?