明日テストがあります。ペイント イベントを使用してオブジェクトを再描画する必要があります。タイマーは使用しない場合があります。
MSDN にあるように、「コントロールが再描画されると Paint イベントが発生します。」、しかし、それは、フォームが最小化されているか、非表示になって戻ってきたときにのみ、既知の場合に発生します。
私のコード:
public partial class Form1 : Form { public Graphics drawArea; public int xPos, yPos; public Form1() { InitializeComponent(); } private void Form1_Paint(object sender, PaintEventArgs e) { drawArea = e.Graphics; DrawUser(); } private void Form1_KeyDown(object sender, KeyEventArgs e) { switch (e.KeyCode) { case Keys.Down: yPos++; break; case Keys.Up: yPos--; break; case Keys.Left: xPos--; break; case Keys.Right: xPos++; break; } } private void DrawUser() { drawArea.FillRectangle(new SolidBrush(Color.Red), xPos, yPos, 50, 50); } }
そのため、キー矢印を複数回押すと、フォームのサイズを変更した後にのみオブジェクトが移動します。ペイントイベントだけで瞬時に動かしたい。
ありがとう