wpf - 在 ScrollViewer 内自动滚动网格导致闪烁/脉冲效果
问题描述
我正在开发一个不断滚动的显示与从制造工厂的油漆线上脱落的零件相关的信息。信息会定期更新,并在水平方向的 70 英寸液晶显示器上显示给员工(我使用标准 Vizio 70 英寸 4K 液晶电视进行测试)。这是一个快速截图供参考...
我在 VB.net 中使用 WPF 表单并创建了一系列带有嵌入式文本框的网格,以构成您在屏幕截图中看到的所有各种单元格。这是在运行时完成的,因为它需要是动态的。为了让整个东西自动“滚动”,主网格嵌入在scrollviewer
控件中,我使用计时器来增加scrollviewer
每 X 毫秒的 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)
提前致谢。
解决方案
推荐阅读
- sql - 在 Postgres 中正确创建索引的列顺序
- javascript - Redux:通用减速器与每个实体的减速器
- javascript - 仅在用户登录时加载页面
- typescript - Typescript - 使用抽象类来简单地共享一个函数
- wordpress - 在 WooCommerce 中创建包含商店内容的新页面
- java - 将一个组组合成多个组而不重复
- c# - 如何在 azure 搜索中使用自定义分析器来获取部分文本搜索?
- android - 当我想在 Room 中存储数据时,NOT NULL 约束失败
- javascript - 如何更改此 javascript,使其针对此 Ajax 过滤器的代码?
- c# - 如何在 C# 中为 Outlook 中的电子邮件设置 Azure 信息保护标签之一?