gpt4 book ai didi

c# - 如何在 .NET 中实现平滑滚动

转载 作者:行者123 更新时间:2023-11-30 22:39:52 24 4
gpt4 key购买 nike

我想在 C# 中为自定义控件实现平滑/动画滚动。我想要类似于以下 javascript 示例的内容:

http://www.kryogenix.org/code/browser/smoothscroll/#p0

我的第一个想法是将滚动条移动到目标点,但在中间点停止。例如,这是一个非常简化的想法:

public void SetSrollValue(int x)
{
// assume right scrolling
float step = x / 10;

while (scroll.Value < x)
{
scroll.Value += step;
}
}

我的问题是:

  • 我应该在一个线程中实现它吗?
  • 这会顺利绘制吗(如果我在我的控件中激活了双缓冲区,我想是的)

那么,如果您知道任何好的示例、文章、指南或类似内容,请在此处提供一个链接?

提前致谢。

最佳答案

要使控件的内容滚动,请将 AutoScrollPosition 的值传递给 e.Graphics.TranslateTransform()。那是你的角度,改变你传递的值。

编写一个小助手类,它使用您在 OnPaint 方法中调用的方法观察控件的 AutoScrollPosition 的值,传递 e.Graphics,以便您可以调用它的 TranslateTransform 方法。当您看到它发生变化时,记录 Environment.TickCount,设置内部“scrollBusy”标志并启动 15 毫秒计时器。在每个计时器滴答声中,调用控件的 Invalidate() 方法,以便在再次调用您的方法时为 TranslateTransform 计算一个新值。计算从原始滚动位置到目标滚动位置的增量,例如 250 毫秒。

关于c# - 如何在 .NET 中实现平滑滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5506875/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com