【WPF】如何使用wpf实现屏幕最前端的绘图?
生活随笔
收集整理的這篇文章主要介紹了
【WPF】如何使用wpf实现屏幕最前端的绘图?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【WPF】如何使用wpf實現屏幕最前端的繪圖? 原文:【WPF】如何使用wpf實現屏幕最前端的繪圖?
引言
?????在知乎上面看到如何使用wpf實現屏幕最前端的繪圖??這么一個問題,覺得全屏彈幕很有趣,所以把它實現了.
實現
????界面設置很簡單,Window界面無邊框+最大化+允許不規則+背景色透明+置頂,如下
<Window x:Class="FullScreen.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="MainWindow" Height="350" Width="525" WindowState="Maximized" Topmost="True" AllowsTransparency="True" Background="Transparent" WindowStyle="None" ><Canvas Name="canvas"></Canvas> </Window>??? 彈幕信息出現的位置和速度都隨機產生,還要保證永遠最大化和置頂,如下
public partial class MainWindow : Window{public MainWindow(){InitializeComponent();this.Loaded += MainWindow_Loaded;this.Deactivated += MainWindow_Deactivated;this.StateChanged += MainWindow_StateChanged;}/// <summary>/// 確保永遠最大化/// </summary>/// <param name="sender"></param>/// <param name="e"></param>void MainWindow_StateChanged(object sender, EventArgs e){this.WindowState = WindowState.Maximized;}/// <summary>/// 確保永遠置頂/// </summary>/// <param name="sender"></param>/// <param name="e"></param>void MainWindow_Deactivated(object sender, EventArgs e){this.Topmost = true;}void MainWindow_Loaded(object sender, RoutedEventArgs e){List<string> list = new List<string>();list.Add("你們的");list.Add("生活");list.Add("真豐富");list.Add("不像我");list.Add("一個");list.Add("帥");list.Add("字");list.Add("竟貫穿了");list.Add("一生");Barrage(list);}/// <summary>/// 在Window界面上顯示彈幕信息,速度和位置隨機產生/// </summary>/// <param name="contentlist"></param>public void Barrage(IEnumerable<string> contentlist){Random random = new Random();foreach (var item in contentlist){ //獲取位置隨機數double randomtop = random.NextDouble();double inittop = canvas.ActualHeight * randomtop;//獲取速度隨機數double randomspeed = random.NextDouble();double initspeed = 50 * randomspeed;//實例化TextBlock和設置基本屬性,并添加到Canvas中TextBlock textblock = new TextBlock();textblock.Text = item;textblock.FontSize = 50;Canvas.SetTop(textblock, inittop);canvas.Children.Add(textblock);//實例化動畫DoubleAnimation animation = new DoubleAnimation(); Timeline.SetDesiredFrameRate(animation,60); //如果有性能問題,這里可以設置幀數animation.From = 0;animation.To = canvas.ActualWidth;animation.Duration = TimeSpan.FromSeconds(initspeed);animation.AutoReverse = true;animation.RepeatBehavior = RepeatBehavior.Forever;animation.Completed += (object sender, EventArgs e) =>{canvas.Children.Remove(textblock); };//啟動動畫 textblock.BeginAnimation(Canvas.LeftProperty, animation);}}}效果圖
?
小結
????本文主要利用了WPF的動畫和窗體的不規則化屬性,這些WPF特性使實現起來的界面效果可以千變萬化.
?
posted on 2019-04-18 15:43 NET未來之路 閱讀(...) 評論(...) 編輯 收藏轉載于:https://www.cnblogs.com/lonelyxmas/p/10730028.html
總結
以上是生活随笔為你收集整理的【WPF】如何使用wpf实现屏幕最前端的绘图?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: app每次更新版本时调用js代码提示用户
- 下一篇: 常用数据库语句(更新)