螺旋模様をドットで描きます


VC++ で SetPixel(点の描画)を使って矩形の螺旋模様を描きます。

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

プログラムの説明です。

  1. 新規プロジェクト(SpiralDot)を作成して WM_PAINT の位置までスクロールして下さい。
  2. WM_PAINT: にドットで螺旋を描画するソースコードを追加します。
          case WM_PAINT:
               hdc = BeginPaint(hWnd, &ps);
               // TODO: 描画コードをここに追加してください...
               int i,j,x,y,len;
               x= 200;
               y= 170;
               MoveToEx(hdc,x,y,NULL);                  // 開始点に移動
               for(i=0; i<100; i++)
               {   len= i*3+5;
                   for(j=0; j<len; j++)
                   {   switch(i%4)
                       {   case 0: x++; break;
                           case 1: y++; break;
                           case 2: x--; break;
                           case 3: y--; break;
                       }
                       SetPixel(hdc,x,y,RGB(255,0,0));  // 点を打つ
                   }
               }
               EndPaint(hWnd, &ps);
               break;
        
  3. [デバッグ][デバッグなしで開始]を選択して、ビルドに続いて実行を行います。
    コンパイルの進行状況とエラーがあれば、エラーメッセージが表示されます。
    ページ先頭のウインドウが表示されたら完成です。
  4. ソースコードの説明です。
    ソースコード 説明
    x= 200; y= 170; 螺旋模様の開始点(中央)を格納します
    MoveToEx(hdc,x,y,NULL) 螺旋模様の開始点(中央)に移動します
    for(i=0; i<100; i++)100本の線を描きます
    len= i*3+5 線の長さは3ドットずつ長くなります
    for(j=0; j<len; j++)線の長さに相当する点を描きます
    switch(i%4) 移動の方向を調べます
    x++, y++, ... 座標を1ドット移動します
    SetPixel(hdc,x,y,RGB(255,0,0)) 現在の座標に点を描画します

【演習】

  1. 蚊取り線香のような渦巻き模様を描いてみて下さい。
    円の描画は プレゼンハムで円を描画する を参照して下さい。

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