前回の記事でベクターソフトを製作すると書きましたが、ベクターソフトは会社で練習制作中なので違うのにしようと思います。同じの作ってもなんの練習にもならないですしね。
今回はとりあえず、前回作成した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);
}完成しました。 簡単でした!
