円を描画する関数を作成する

VC++ でプレゼンハムで円を描画する関数を作成します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プロジェクトの設定

  1. 新規プロジェクト(Circle)を作成して WM_PAINT の位置までスクロールして下さい。
    プロジェクトの作成は Windows プログラムを自動的に作成する を参照して下さい。
  2. WM_PAINT に circle() 関数を呼び出して円を描画するコードを追加します。
    同じ色では面白くないので、一重ごとに円のサイズと色を変えて描画しています。
    色の設定は 点のつなげて線を描画する を参照して下さい。
    srand() は乱数の初期化を行う関数で、毎回同じ図形が描画されるように 2 で初期化しています。
        case WM_PAINT:
            hdc = BeginPaint(hWnd, &ps);
            // TODO: 描画コードをここに追加してください...
            int     len,r,g,b;
            srand(2);
            for(len=100; len>0; len-= 10)
            {   r= rand()%256;
                g= rand()%256;
                b= rand()%256;
                circle(hdc,110,110,len,RGB(r,g,b));
            }
            EndPaint(hWnd, &ps);
            break;
        
  3. 円を描画する circle() 関数を定義します。
    「関数の宣言」に続いて以下のソースコードを追加して下さい。
        // このコード モジュールに含まれる関数の宣言を転送します :
        ATOM                MyRegisterClass(HINSTANCE hInstance);
        BOOL                InitInstance(HINSTANCE, int);
        LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
        LRESULT CALLBACK    About(HWND, UINT, WPARAM, LPARAM);
    
        void                circle(HDC hdc, int x, int y, int rl, COLORREF color);
    
        void circle(HDC hdc, int x, int y, int r, COLORREF color)
        {   int     f,dx,cx;
                :
                :
    
        }
        
  4. [デバッグ][デバッグなしで開始]を選択して、ビルドに続いて実行を行います。
    ページ先頭の画像が表示されたら完成です。

プログラムの説明

circle() 関数の説明です。
円を描くロジックは プレゼンハムで円を描画する を参照して下さい。
最初の1行は関数のプロトタイプ宣言です。
void circle(HDC hdc, int x, int y, int rl, COLORREF color);

circle() 関数のパラメータは次のとおりです。
ソースコード 説明
circle() ユーザー定義関数の名前
HDC hdc デバイスコンテキスト
int x, int y 円の中心座標
int r 円の半径
COLORREF color ドットの描画色

超初心者のプログラム入門(Win32API C++)