我希望在我的c#窗体上能够顺畅地滚动文本.
我试图定义带有文本的标签,逐个像素地移动,但它不是平滑的,因为它就像在flash中创建的动画一样.
我怎样才能设法得到如此流畅的动画?
先感谢您!
我试过这个,我有一些好消息和一些坏消息.
好消息是它有可能.我现在正在测试代码,即使使用GDI +,我也可以实现绝对柔滑的文本滚动.
困难的部分是你必须确保/实施它有很多事情:
此外,Windows多媒体计时器具有毫秒级的分辨率,无法为您提供完美的60 Hz刷新(1000/60不是整数),因此您需要实现某种浮点显示刷新计数机制以获得尽可能接近显示刷新率尽可能.有点像
float tickCount = 0.0f;
float tickDelta = 1000.0f / 60.0f;
void mmTimer_Tick(object sender, EventArgs e)
{
tickCount++;
if (tickCount >= tickDelta)
{
tickCount -= tickDelta;
// scroll your text here
Invalidate();
}
}
Run Code Online (Sandbox Code Playgroud)
会做.
最后,偶尔会发生一些轻微的撕裂.这几乎是不可避免的,因为您无法访问垂直同步视频寄存器.尝试消除撕裂的时间.
老实说,我希望这会有所帮助.如果您在实施它时遇到任何问题,请告诉我.