/// <summary> /// 添加顶部和底部弹幕 /// </summary> /// <param name="model"></param> public async void AddTop(DanmuModel model, bool isMyDanmu) { TextBlock txt1 = new TextBlock { Foreground = model.DanColor, }; TextBlock txt2 = new TextBlock { Foreground = new SolidColorBrush(Colors.Black), Margin = new Thickness(1), }; Grid grid = new Grid { HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Top, DataContext = model, }; if (isMyDanmu) { grid.BorderBrush = new SolidColorBrush(Colors.HotPink); grid.BorderThickness = new Thickness(2); } double size = double.Parse(model.Size); if (size == 25) { txt2.FontSize = fontsize; txt1.FontSize = fontsize; } else { txt2.FontSize = fontsize - 4; txt1.FontSize = fontsize - 4; } txt1.Text = txt2.Text = model.Message; grid.Children.Add(txt2); grid.Children.Add(txt1); grid.UpdateLayout(); if (model.Mode == "5") { top.Children.Add(grid); await Task.Delay(5000); top.Children.Remove(grid); } else if (model.Mode == "4") { bottom.Children.Add(grid); await Task.Delay(5000); bottom.Children.Remove(grid); } }
/// <summary> /// 添加滚动弹幕 /// </summary> /// <param name="model"></param> public async void AddBasic(DanmuModel model, bool isMyDanmu) { TextBlock txt1 = new TextBlock { Foreground = model.DanColor, }; TextBlock txt2 = new TextBlock { Foreground = new SolidColorBrush(Colors.Black), Margin = new Thickness(1), }; Grid grid = new Grid { HorizontalAlignment = HorizontalAlignment.Left, VerticalAlignment = VerticalAlignment.Top, DataContext = model, }; if (isMyDanmu) { grid.BorderBrush = new SolidColorBrush(Colors.HotPink); grid.BorderThickness = new Thickness(2); } double size = double.Parse(model.Size); if (size == 25) { txt2.FontSize = fontsize; txt1.FontSize = fontsize; } else { txt2.FontSize = fontsize - 4; txt1.FontSize = fontsize - 4; } txt1.Text = txt2.Text = model.Message; grid.Children.Add(txt2); grid.Children.Add(txt1); TranslateTransform move = new TranslateTransform(); move.X = grid_0.ActualWidth; grid.RenderTransform = move; grid_0.Children.Add(grid); Grid.SetRow(grid, row); row++; if (row == 10) { row = 0; } grid.DataContext = model; grid.UpdateLayout(); Storyboard sty = new Storyboard(); DoubleAnimation ani = new DoubleAnimation { Duration = new Duration(TimeSpan.FromSeconds(speed)), To = -(grid.ActualWidth), }; sty.Children.Add(ani); Storyboard.SetTarget(ani, move); Storyboard.SetTargetProperty(ani, "X"); grid.Resources.Remove("justintimeStoryboard"); grid.Resources.Add("sty", sty); sty.Begin(); await Task.Run(async() => { int i = 0; while (true) { if (!isPlaying) { await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { sty.Pause(); }); } else { if (i == speed * 2) { break; } i++; await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { sty.Resume(); }); } await Task.Delay(500); } }); grid_0.Children.Remove(grid); }