为什么我的 GUI 内容闪烁



我想建立一个窗口,其中包含一个简单的正方形,它正在移动。到目前为止它有效,但矩形闪烁,我不知道为什么。我该如何解决这个问题。我只想学习如何使用 C# 制作游戏

这是我的计划.cs

        static void Main()
        {
            Form1 myForm = new Form1();
            while (true)
            {
                myForm.UpdateData();
                myForm.Invalidate();
                myForm.Update();
                myForm.Refresh();
                myForm.Show();
                Thread.Sleep(15);
            }
        }

这是我的计划.cs

这是我的表格1.cs

        public Form1()
        {
            InitializeComponent();
            this.Text = "2D Grafik mit C# - Beispiel 1";
            DoubleBuffered = true;
            g = this.CreateGraphics();
            g.SmoothingMode = SmoothingMode.AntiAlias;
            xPos = 50;
            yPos = 50;
        }
        public void UpdateData()
        {
            xPos += 1;
        }
        protected override void OnPaint(PaintEventArgs e)
        {
            g.FillRectangle(new SolidBrush(Color.Red), xPos, yPos, 50, 50);
        }

我无法想象这个问题是由什么引起的

谁能帮我?

感谢您的帮助

Program.cs 中,您不需要在每次迭代中显示表单,也不需要刷新:

static void Main()
{
    Form1 myForm = new Form1();
    myForm.Show();
    while (true)
    {
        myForm.UpdateData();
        myForm.Invalidate();
        myForm.Update();
        Thread.Sleep(15);
    }
}

如果您在Form1.cs中将OnPaint方法更改为此方法,则闪烁将消失:

protected override void OnPaint(PaintEventArgs e)
{
    e.Graphics.FillRectangle(new SolidBrush(Color.Red), xPos, yPos, 50, 50);
}

但是,正如其他人所指出的,我也这么认为,WindowsForms不是创建游戏的最佳选择。

最新更新