c# wpf 多个textblock滚动字幕怎么实现?

如题所示,想做个滚动报警信息的功能,报警是动态的,如果报警忽然消失了,这条textblock也消失了,我想要n个textblock拍成一行(text是动态队列,随时可能消... 如题所示,想做个滚动报警信息的功能,报警是动态的,如果报警忽然消失了,这条textblock也消失了,我想要n个textblock拍成一行(text是动态队列,随时可能消失),然后从右往左滚动,当最后一个字符消失在屏幕上时,重复以上步骤,这个如何实现代码? 展开
 我来答
叽哦猫
2023-02-20 · 小知识,小技巧,有意思。
叽哦猫
采纳数:83 获赞数:65

向TA提问 私信TA
展开全部

可以通过使用 WPF 中的 ListBox 控件来实现您所需的滚动报警信息功能,具体步骤如下:


在代码中使用 ObservableCollection 存储报警信息,并将其绑定到 ListBox 控件的 ItemsSource 属性上,如下所示:

在代码中使用 DispatcherTimer 定时器,定时更新 ListBox 控件中的报警信息,以及实现报警信息的滚动效果。具体来说,可以在定时器的 Tick 事件中,循环遍历 ListBox 控件中的每个 ListBoxItem,使用 DoubleAnimation 对其 Canvas.Left 属性进行动画处理,实现滚动效果。同时,在动画结束后,将已经滚出屏幕的 ListBoxItem 从 ListBox 控件中移除,如下所示:

以上是一个简单的滚动报警信息功能的实现方法。您可以根据自己的需求进行调整和优化。

帐号已注销
2023-02-20 · 超过11用户采纳过TA的回答
知道答主
回答量:103
采纳率:0%
帮助的人:5万
展开全部
要实现多个 TextBlock 滚动字幕,你可以使用 WPF 中的 ScrollViewer 控件来实现。具体步骤如下:
1.在 XAML 中定义一个 ScrollViewer 控件,将其内容设置为一个 StackPanel,然后将所有的 TextBlock 放在 StackPanel 中。
xml:

2. 在 C# 代码中使用一个计时器,每隔一定时间滚动一定距离。你可以通过设置 ScrollViewer 的 VerticalOffset 属性来实现滚动,例如:
csharp:
double scrollSpeed = 2; // 每隔多少毫秒滚动的距离
double scrollAmount = 1; // 每次滚动的距离
DispatcherTimer timer = new DispatcherTimer();
public MainWindow()
{
InitializeComponent();
timer.Tick += new EventHandler(timer_Tick);
timer.Interval = TimeSpan.FromMilliseconds(scrollSpeed);
timer.Start();
}
void timer_Tick(object sender, EventArgs e)
{
scrollViewer1.ScrollToVerticalOffset(scrollViewer1.VerticalOffset + scrollAmount);
}
上面的代码中,我们使用一个名为 timer 的计时器来控制滚动速度。在 timer_Tick 方法中,我们将 scrollViewer1 的 VerticalOffset 属性增加 scrollAmount,从而实现向上滚动字幕。
注意,这只是一个简单的示例代码,你可以根据实际需求来调整滚动速度和滚动距离。同时,为了避免滚动速度过快,你可能需要根据 TextBlock 的实际高度和显示区域的高度来动态调整滚动距离。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
KiteSchool体重管理
2023-02-20 · 自律 他律 宽容 陪伴人生最重要的四件事
KiteSchool体重管理
向TA提问
展开全部
C是一种通用计算机编程语言,由丹尼斯·里奇于20世纪70年代创建。它提供对系统内存的低级访问,并用于创建人类可读和有序指令集的程序。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式