是的,计时器可以工作。下面是我在微软的一个例子中看到的一个聪明的技巧,它展示了如何在Winforms项目中使用XNA。它使用应用程序。空闲事件:
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
pictureBox1.Paint += new PaintEventHandler(pictureBox1_Paint);
Application.Idle += new EventHandler(Application_Idle);
this.FormClosed += delegate { Application.Idle -= Application_Idle; };
}
private void Application_Idle(object sender, EventArgs e) {
pictureBox1.Invalidate();
}
int cnt;
void pictureBox1_Paint(object sender, PaintEventArgs e) {
cnt++;
e.Graphics.DrawString(cnt.ToString(), this.Font, Brushes.Black, 0, 0);
}
}
我用一个PictureBox而不是一个面板来隐藏闪烁,PB打开了DoubleBuffered属性。不过,这与XNA没有太大关系。使用vsync是行不通的。你可能应该看看这个例子,当我试着看的时候,“旋转三角形”是完全平滑的,没有任何撕裂。
This thread
谈谈这个。