C# 文字一个一个显示(Alan Walker - Alone(Restrung) MV里的歌词显示特效)

2023-11-10 01:10

本文主要是介绍C# 文字一个一个显示(Alan Walker - Alone(Restrung) MV里的歌词显示特效),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我做聊天软件时很想做到跟 艾伦 · 走路人 的 MV 这样的逐字输出效果:

是我三年前太L了,明明非常简单但是偏要弄那么麻烦

现在的需求是点击按钮 button1 让 Label label1 逐字输出文字“Apart, but still together.”,先新建个 Timer timer1,然后代码如下

        private void button1_Click(object sender, EventArgs e){this.showText("Apart, but still together.");}String text = "";int nowPosition = 0;public void showText(string str){this.label1.Text = "";this.text = str;this.nowPosition = 0;}private void timer1_Tick(object sender, EventArgs e){if (nowPosition < text.Length){label1.Text += text.ToCharArray()[nowPosition];nowPosition++;}}

这么简单就能做到的事情,在三年前我竟然用下面这么长的代码?

旧代码:(不推荐使用)

当时不会弄,我就去百度知道提问。他说要用for和多线程。

然后我就慢慢地写了这代码:

using System;
using System.Windows.Forms;namespace WindowsFormsApplication1
{public partial class Form1 : Form{ListBox DelayShowText = new ListBox();public Form1(){InitializeComponent();DelayShowText.Visible = false;//不显示用于显示文字的控件DelayShowText.SelectedIndexChanged += new EventHandler(listBox1_SelectedIndexChanged);Control.CheckForIllegalCrossThreadCalls = false;//不捕捉对错误线程的控件}private void button1_Click(object sender, EventArgs e){string s = textBox1.Text;//声明将要被分隔的文本int a = s.Length;//声明引索while (true)//循环{s = s.Insert(a, "≌");//从后面开始插入分隔符(以免bug,而且分隔符最好不怎么常见)a--;//减少引索if (a == 0)//如果插入分隔符完成break;//跳出循环}string[] Stri = s.Split('≌');//将文本用写入组数(要输入上面的分隔符)foreach(string str in Stri)//遍历组数{DelayShowText.Items.Add(str);//加入组数到列表框}DelayShowText.SelectedIndex = 0;//选择第一个项以开始输出//richTextBox1.Text += textBox1.Text + "\n\r\n\r";//直接输出信息}/// <summary>/// 文字显示的延迟(单位:毫秒)/// </summary>int delay = 20;private void listBox1_SelectedIndexChanged(object sender, EventArgs e){System.Threading.Thread t1 = new System.Threading.Thread(() =>//使用多线程(否则会卡住一会){try//全程捕捉错误不提示,怕出bug{if (DelayShowText.SelectedIndex < DelayShowText.Items.Count)//如果没显示完成{System.Threading.Thread.Sleep(delay);//延迟richTextBox1.Text += DelayShowText.SelectedItem.ToString();//追加文本DelayShowText.SelectedIndex += 1;//下一个}}catch//捕捉到错误就算是显示完成了……  {DelayShowText.Items.Clear();//清空列表框  richTextBox1.Text += "\n\r\n\r";//换两行  }  }); t1.Start();//启动线程}}
}

已测试可用

这篇关于C# 文字一个一个显示(Alan Walker - Alone(Restrung) MV里的歌词显示特效)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/379540

相关文章

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代

C#中DrawCurve的用法小结

《C#中DrawCurve的用法小结》本文主要介绍了C#中DrawCurve的用法小结,通常用于绘制一条平滑的曲线通过一系列给定的点,具有一定的参考价值,感兴趣的可以了解一下... 目录1. 如何使用 DrawCurve 方法(不带弯曲程度)2. 如何使用 DrawCurve 方法(带弯曲程度)3.使用Dr

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

C#如何动态创建Label,及动态label事件

《C#如何动态创建Label,及动态label事件》:本文主要介绍C#如何动态创建Label,及动态label事件,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#如何动态创建Label,及动态label事件第一点:switch中的生成我们的label事件接着,

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调