C#のフォームは、デスクトップの集中砲火を実現します

弾幕効果の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 = 新しいポイント(00 );
            この .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

 

おすすめ

転載: www.cnblogs.com/ping9719/p/11612876.html