戻る

グラフィックスプログラマになる 08 (2024/06/17)

以前のコードを変数を使って書き直す

さて、変数について分かってきました。03回で書いたコードを、変数を使って書き直してみましょう。


void OnPaint(HDC hdc)
{
  COLORREF color = RGB(0, 0, 0);
  SetPixel(hdc, 20, 10, color);
  SetPixel(hdc, 21, 10, color);
  SetPixel(hdc, 22, 10, color);
  SetPixel(hdc, 23, 10, color);

  SetPixel(hdc, 20, 11, color);
  SetPixel(hdc, 21, 11, color);
  SetPixel(hdc, 22, 11, color);
  SetPixel(hdc, 23, 11, color);

  SetPixel(hdc, 20, 12, color);
  SetPixel(hdc, 21, 12, color);
  SetPixel(hdc, 22, 12, color);
  SetPixel(hdc, 23, 12, color);

  SetPixel(hdc, 20, 13, color);
  SetPixel(hdc, 21, 13, color);
  SetPixel(hdc, 22, 13, color);
  SetPixel(hdc, 23, 13, color);
}


これでしたね。この書き方だと、別の座標に描画したい際に、16行も書き換えなければいけないですね。なので、こうしたらどうでしょうか?


void OnPaint(HDC hdc)
{
  COLORREF color = RGB(0, 0, 0);

  int x = 20;
  int y = 10;

  SetPixel(hdc, x, y, color);
  SetPixel(hdc, x + 1, y, color);
  SetPixel(hdc, x + 2, y, color);
  SetPixel(hdc, x + 3, y, color);

  SetPixel(hdc, x, y + 1, color);
  SetPixel(hdc, x + 1, y + 1, color);
  SetPixel(hdc, x + 2, y + 1, color);
  SetPixel(hdc, x + 3, y + 1, color);

  SetPixel(hdc, x, y + 2, color);
  SetPixel(hdc, x + 1, y + 2, color);
  SetPixel(hdc, x + 2, y + 2, color);
  SetPixel(hdc, x + 3, y + 2, color);

  SetPixel(hdc, x, y + 3, color);
  SetPixel(hdc, x + 1, y + 3, color);
  SetPixel(hdc, x + 2, y + 3, color);
  SetPixel(hdc, x + 3, y + 3, color);
}




これなら、2行書き換えるだけで、別の位置に点を描画することができます。


void OnPaint(HDC hdc)
{
  COLORREF color = RGB(0, 0, 0);

  int x = 120;
  int y = 110;

  SetPixel(hdc, x, y, color);
  SetPixel(hdc, x + 1, y, color);
  SetPixel(hdc, x + 2, y, color);
  SetPixel(hdc, x + 3, y, color);

  SetPixel(hdc, x, y + 1, color);
  SetPixel(hdc, x + 1, y + 1, color);
  SetPixel(hdc, x + 2, y + 1, color);
  SetPixel(hdc, x + 3, y + 1, color);

  SetPixel(hdc, x, y + 2, color);
  SetPixel(hdc, x + 1, y + 2, color);
  SetPixel(hdc, x + 2, y + 2, color);
  SetPixel(hdc, x + 3, y + 2, color);

  SetPixel(hdc, x, y + 3, color);
  SetPixel(hdc, x + 1, y + 3, color);
  SetPixel(hdc, x + 2, y + 3, color);
  SetPixel(hdc, x + 3, y + 3, color);
}




(次回へ続く)