我正在开发一个不断滚动显示的信息,该信息与制造工厂中从涂漆线脱落的零件有关。该信息会定期刷新,并在水平放置的70英寸液晶显示器上显示给员工(我正在使用标准的Vizio 70英寸4K液晶电视进行测试)。这是一个快速屏幕截图,仅供参考...
我在VB.net中使用WPF表单,并创建了一系列带有嵌入式文本框的网格,以构成屏幕快照中看到的所有各种单元格。这是在运行时完成的,因为它需要动态。为了使整个事情自动“滚动”,主网格嵌入在scrollviewer
控件中,我使用计时器每X毫秒滚动一次来递增scrollviewer
的VerticalOffset属性浏览所有信息,直到到达末尾。
我应该提到,整个网格通常由少于100条信息组成。
此解决方案的所有工作都很好,除了当网格自动滚动通过我最终到达的行会产生这种脉冲/闪烁效果时,在大屏幕上运行程序时尤其如此。我已经读过有关双缓冲的信息,但这已经是WPF格式,因此我不确定它是否适用于这里,或者不确定是否可以应用于scrollviewer
或grid
控件。这是一个简短的视频,显示了我在说什么(请注意:每隔两行就有意暂停滚动)...
有什么想法可以使我在滚动时最大程度地减少这种影响?
现在我正在设置一个计时器,每30毫秒运行一次...
Dim scrollTimer As DispatcherTimer = New DispatcherTimer()
AddHandler scrollTimer.Tick, AddressOf scrollTimer_Tick
scrollTimer.Interval = New TimeSpan(0, 0, 0, 0, 30)
scrollTimer.Start()
然后将垂直偏移量滚动1 ...
scrlPaintLineStatus.ScrollToVerticalOffset(scrlPaintLineStatus.VerticalOffset + 1)
谢谢。