我想构建一个包含正在移动的简单方块的窗口。它工作到目前为止,但矩形闪烁,我不知道为什么。我该如何解决这个问题。我只想学习如何使用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);
}
我无法想象这个问题是由
引起的任何人都可以帮助我吗?
感谢您的帮助
答案 0 :(得分:1)
在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并不是创建游戏的最佳选择。