とりあえずなんかのソフトに変更

前回の記事でベクターソフトを製作すると書きましたが、ベクターソフトは会社で練習制作中なので違うのにしようと思います。同じの作ってもなんの練習にもならないですしね。

今回はとりあえず、前回作成したMainBox.csに四角形を描画して矢印キーを押すと四角形が移動できるようにします。

とりあえず

private Rectangle で 変数名をbox, containerとします。

private Rectangle box;
private Rectangle container;

boxはMainBox.cs内のX座標100 Y座標50から始まる幅 30、縦 30の四角形

containerは四角形(box)が移動できる領域とします。 X座標100、Y座標50、幅300、 縦400の四角形です。

  box = new Rectangle(100, 50, 30, 30);
  container = new Rectangle(100, 50, 300, 400);

変数名 = new Rectangle(X座標, Y座標, 幅, 縦);

矢印キーを使うには

protected override bool IsInputKey(Keys keyData)
{
  switch (keyData)
  {
    case Keys.Up:
    case Keys.Down:
    case Keys.Left:
    case Keys.Right:
      return true;
    default:
      return base.IsInputKey(keyData);
  }
}

これを記述する必要がありました。

MoveBoxメソッドを作り、矢印キーの上下左右でboxが移動する方向を変えます。

private void MoveBox(Keys key)
{
  int step = 10;
  switch (key)
  {
    case Keys.Up:
      if (box.Y - step >= container.Top)
        box.Y -= step;
      break;

    case Keys.Down:
      if (box.Y + step + box.Height <= container.Bottom)
        box.Y += step;
      break;

    case Keys.Left:
      if (box.X - step >= container.Left)
        box.X -= step;
      break;

    case Keys.Right:
      if (box.X + step + box.Width <= container.Right)
        box.X += step;
      break;
  }

  this.Invalidate();
}

これは自分も最初は慣れなかったのですが、Y軸は上にいくと増加するのではなく、下にいくと増加します。なので↑のキーを押した時はboxのY軸が10ずつ下がります。container(移動領域)より上にいかないように>=container.Topとします。

if(box.Y – step >= container.Top) – もしboxから10引いても(上に上がっても)container.Topより大きい(containerの上より下にあるなら)

box.Y -= step; (box.Y = box.Y – step) – boxのY軸を引く(上に上げる)

Paintイベントには四角形を描画するためのコードを書きます。

private void MainBox_Paint(object sender, PaintEventArgs e)
{
  e.Graphics.DrawRectangle(Pens.Black, container);
  e.Graphics.DrawRectangle(Pens.Black, box);

}

Pens.Black 黒色のペンで containerとboxを描画せよと命令。

KeyDownイベントにはMoveBoxメソッドを呼び出します。

private void MainBox_KeyDown(object sender, KeyEventArgs e)
{

  MoveBox(e.KeyCode);
}

完成しました。 簡単でした!

タイトルとURLをコピーしました