弾幕効果のC#フォームの簡単な実装を使用します
0ソース: https://github.com/ping9719/-desktop-barrage-
1.フォームセットを作成します。
2.タイマーを追加します。
3.コード
使用してシステムを。 使用してSystem.Collections.Genericを。 使用してSystem.ComponentModelを。 使用してSystem.Dataを。 使用System.Drawingを。 使用してSystem.Drawing.Textを。 使用してSystem.Linqのを。 使用してSystem.Textのを。 使用してSystem.Threadingを。 使用してSystem.Threading.Tasksを。 使用してのSystem.Windows.Formsを。 名前空間DanMu { パブリック 部分 クラスをForm1:フォーム { 一覧 <ラベル> TanMuList = 新しいリスト<ラベル> (); 公Form1の() { のInitializeComponent(); } プライベート ボイド Form1_Load(オブジェクト送信者、のEventArgs電子) { System.Drawing.RectangleのREC = Screen.GetWorkingArea(本) この .Height = rec.Height / 3 * 2。// 3分之2 本 .Width = rec.Width。 この .Location = 新しいポイント(0、0 ); この .BackColor = Color.White。 この.TransparencyKey = Color.White。 この .Opacity = 1 。 スレッドTH1 = 新しいスレッド(新しいThreadStart(AAAA)); th1.Start(); AddTanMu(" 你开启了弹幕" ); } // 测试 プライベート ボイドAAAA() { 一方(真) { AddTanMu(Guid.NewGuid()のToString()); Thread.sleep(新しいランダム()。次(1000年、3000)); } } プライベート 無効AddTanMu(文字列の単語) { ラベルラベル = 新しいラベル(); label.Text = 言葉。 label.AutoSize = 真; label.ForeColor = Color.Red。 label.BackColor = Color.Transparent。 label.Font = 新しいフォント(" 宋体"、20 ); label.Location = 新しいポイント(この.Width、新しいランダム()次(。この .Height - label.Height)); TanMuList.Add(ラベル)。 この .Invoke(新しいアクション(()=> { この.Controls.Add(ラベル); }))。 } プライベート ボイド Timer_Tick(オブジェクト送信者、のEventArgs電子) { // 只能使用するための循环 ため(INT I = 0 ; I <TanMuList.Count; iは++ ) { ラベルラベル = TanMuList [I]。 ポイントポイント= label.Location。 // 步数、速度 のための(int型 V = 0 ; V < 7 ; V ++ ) { point.X = point.X - 1 。 label.Location = 点。 } // 超出移除 場合(point.X + label.Width < 0 ) { label.Visible = 偽。 TanMuList.Remove(ラベル)。 この.Controls.Remove(ラベル)。 } } } } }
4.効果
質問については、私に連絡してください:QQ 971931543