如何刷新我的网格?以及如何计算时间

本文关键字:何计算 计算 时间 我的 何刷新 刷新 网格 | 更新日期: 2023-09-27 18:19:58

我正在尝试创建一个简单的刚体2D物理引擎。

我能够通过使用四条线创建一个矩形图像,并能够根据图像的角度和位置对其进行操作;我可以移动和旋转它(虽然我可以旋转,但我不使用旋转函数,因为我还不能理解角动量理论)。

根据简单的公式,图像会下降并反弹:

v(velocity) += a(acceleration)
x += v(velocity)

但每次我想执行一个动作时,我都必须点击一个按钮。

我希望它能自动执行并自动更新,我试图使用循环,但由于某种原因,程序在循环部分似乎停止了。因为我使用了一个无限循环,它会一次又一次地开始,所以我的程序就冻结了。

不仅是这个问题,我的好朋友也告诉我,如果我想让这个发动机正常工作,我应该能够计算出时间。

如何刷新我的网格?以及如何计算时间

我喜欢DJ KRAZE的评论-使用System.Windows.Threading.DispatcherTimer,并将间隔设置为您希望重新绘制图片的频率。在计时器的Tick事件上,重新绘制。

如果你想知道为什么简单循环不起作用,你必须稍微了解一下Windows消息循环。对于一个简短且有点不准确的概述,应用程序中运行的所有事情,听起来都发生在一个线程上。Windows使用通过消息循环的消息WM_PAINT来绘制控件本身。它一次只处理一条消息。

在你有无限循环的地方,这是在处理一些消息时发生的。因此,这使消息循环无法处理任何消息,包括要绘制控件的消息。因此,您在无限循环中看不到任何更新。

也许你可以看看XNA,它是一个促进游戏开发的微软平台,你应该去App Hub了解如何开始。

至于你关于刷新屏幕的具体问题,你可以看看更新和绘制方法。这里有一个教程,虽然可能无法解决您的具体问题,但应该让您知道如何刷新屏幕。