我想建立一个窗口,其中包含一个简单的正方形,它正在移动。到目前为止它有效,但矩形闪烁,我不知道为什么。我该如何解决这个问题。我只想学习如何使用 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不是创建游戏的最佳选择。