2

明日テストがあります。ペイント イベントを使用してオブジェクトを再描画する必要があります。タイマーは使用しない場合があります。

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);
    }
}

そのため、キー矢印を複数回押すと、フォームのサイズを変更した後にのみオブジェクトが移動します。ペイントイベントだけで瞬時に動かしたい。

ありがとう

4

2 に答える 2

2

見つけた!

this.Invalidate();キーを押した後に追加する。これにより、ペイント イベントに再描画が指示されます。

于 2013-09-03T22:52:58.037 に答える