gpt4 book ai didi

c# - 为什么我的 GUI 内容闪烁?

转载 作者:太空宇宙 更新时间:2023-11-03 12:16:01 27 4
gpt4 key购买 nike

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

这是我的 Program.cs

        static void Main()
{
Form1 myForm = new Form1();

while (true)
{
myForm.UpdateData();

myForm.Invalidate();
myForm.Update();
myForm.Refresh();

myForm.Show();
Thread.Sleep(15);
}
}

这是我的 Program.cs

这是我的 Form1.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 不是创建游戏的最佳选择。

关于c# - 为什么我的 GUI 内容闪烁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49753542/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com