首页 > 解决方案 > 在 ScrollViewer 内自动滚动网格导致闪烁/脉冲效果

问题描述

我正在开发一个不断滚动的显示与从制造工厂的油漆线上脱落的零件相关的信息。信息会定期更新,并在水平方向的 70 英寸液晶显示器上显示给员工(我使用标准 Vizio 70 英寸 4K 液晶电视进行测试)。这是一个快速截图供参考...

显示示例

我在 VB.net 中使用 WPF 表单并创建了一系列带有嵌入式文本框的网格,以构成您在屏幕截图中看到的所有各种单元格。这是在运行时完成的,因为它需要是动态的。为了让整个东西自动“滚动”,主网格嵌入在scrollviewer控件中,我使用计时器来增加scrollviewer每 X 毫秒的 VerticalOffset 属性,以滚动所有信息,直到它到达末尾。

我应该提到,整个网格通常由不到 100 行信息组成。

这个解决方案一切正常,除了当网格在行中自动滚动时,我最终会出现这种脉冲/闪烁效果,在大显示器上运行程序时尤其突出。我已经阅读过双缓冲,但这已经是一个 WPF 表单,所以我不确定它是否适用于这里,或者是否可以应用于一个scrollviewergrid控件。这是一个简短的视频,显示了我在说什么(注意:每两行后暂停滚动是故意的)...

Youtube 视频示例

关于在滚动时我可以做些什么来最小化这种影响的任何想法?

现在我正在设置一个计时器,每 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)

提前致谢。

标签: wpfvb.netgridscrollviewer

解决方案


推荐阅读