使用C# Form 简单的实现了弹幕效果
0. 源代码 : https://github.com/ping9719/-desktop-barrage-
1.创建一个Form 设置
2.添加一个计时器
3. 代码
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Text; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace DanMu { public partial class Form1 : Form { List<Label> TanMuList = new List<Label>(); public Form1() { InitializeComponent(); } private void Form1_Load(object sender,EventArgs e) { System.Drawing.Rectangle rec = Screen.GetWorkingArea(this); this.Height = rec.Height / 3 * 2; // 3分之2 this.Width = rec.Width; this.Location = new Point(0,0); this.BackColor = Color.White; this.TransparencyKey = Color.White; this.Opacity = 1; Thread th1 = new Thread(new ThreadStart(aaaa)); th1.Start(); AddTanMu("你开启了弹幕"); } //测试 private void aaaa() { while (true) { AddTanMu(Guid.NewGuid().ToString()); Thread.Sleep(new Random().Next(1000,3000)); } } private void AddTanMu(String word) { Label label = new Label(); label.Text = word; label.AutoSize = true; label.ForeColor = Color.Red; label.BackColor = Color.Transparent; label.Font = new Font("宋体",20); label.Location = new Point(this.Width,new Random().Next(this.Height - label.Height)); TanMuList.Add(label); this.Invoke(new Action(() => { this.Controls.Add(label); })); } private void Timer_Tick(object sender,EventArgs e) { //只能使用for循环 for (int i = 0; i < TanMuList.Count; i++) { Label label = TanMuList[i]; Point point = label.Location; //步数、速度 for (int v = 0; v < 7; v++) { point.X = point.X - 1; label.Location = point; } //超出移除 if (point.X + label.Width < 0) { label.Visible = false; TanMuList.Remove(label); this.Controls.Remove(label); } } } } }
4.效果
如有问题 请联系我 :QQ 971931543
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。