這篇文章主要介紹“怎么用WPF代碼實(shí)現(xiàn)Windows屏保制作”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“怎么用WPF代碼實(shí)現(xiàn)Windows屏保制作”文章能幫助大家解決問(wèn)題。
創(chuàng)新互聯(lián)是一家專業(yè)提供新豐企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為新豐眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
屏保程序的本質(zhì)上就是一個(gè)Win32
窗口應(yīng)用程序;
把編譯好一個(gè)窗口應(yīng)用程序之后,把擴(kuò)展名更改為 scr
,于是你的屏幕保護(hù)程序就做好了;
選中修改好的 scr
程序上點(diǎn)擊右鍵,可以看到一個(gè) 安裝 選項(xiàng),點(diǎn)擊之后就安裝了;
安裝之后會(huì)立即看到我們的屏幕保護(hù)程序已經(jīng)運(yùn)行起來(lái)了;
處理屏幕保護(hù)程序參數(shù)如下
/s 屏幕保護(hù)程序開(kāi)始,或者用戶點(diǎn)擊了 預(yù)覽
按鈕;
/c 用戶點(diǎn)擊了 設(shè)置
按鈕;
/p 用戶選中屏保程序之后,在預(yù)覽窗格中顯示;
1)MainWindow.xaml
代碼如下;
<Window x:Class="ScreenSaver.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:system="clr-namespace:System;assembly=mscorlib" xmlns:drawing="http://www.microsoft.net/drawing" xmlns:local="clr-namespace:ScreenSaver" mc:Ignorable="d" WindowStyle="None" Title="MainWindow" Height="450" Width="800"> <Grid x:Name="MainGrid"> <drawing:PanningItems ItemsSource="{Binding stringCollection,RelativeSource={RelativeSource AncestorType=local:MainWindow}}" x:Name="MyPanningItems"> <drawing:PanningItems.ItemTemplate> <DataTemplate> <Rectangle> <Rectangle.Fill> <ImageBrush ImageSource="{Binding .}"/> </Rectangle.Fill> </Rectangle> </DataTemplate> </drawing:PanningItems.ItemTemplate> </drawing:PanningItems> <Grid HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,50,0,0"> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> </Grid.RowDefinitions> <Grid.Resources> <Style TargetType="TextBlock"> <Setter Property="FontSize" Value="90"/> <Setter Property="FontWeight" Value="Black"/> <Setter Property="Foreground" Value="White"/> </Style> </Grid.Resources> <WrapPanel> <TextBlock Text="{Binding Hour,RelativeSource={RelativeSource AncestorType=local:MainWindow}}"/> <TextBlock Text=":" x:Name="PART_TextBlock"> <TextBlock.Triggers> <EventTrigger RoutedEvent="FrameworkElement.Loaded"> <BeginStoryboard> <Storyboard> <DoubleAnimation Duration="00:00:01" From="1" To="0" Storyboard.TargetName="PART_TextBlock" Storyboard.TargetProperty="Opacity" RepeatBehavior="Forever" FillBehavior="Stop"/> </Storyboard> </BeginStoryboard> </EventTrigger> </TextBlock.Triggers> </TextBlock> <TextBlock Text="{Binding Minute,RelativeSource={RelativeSource AncestorType=local:MainWindow}}"/> </WrapPanel> <TextBlock Grid.Row="1" FontSize="45" HorizontalAlignment="Center" Text="{Binding Date,RelativeSource={RelativeSource AncestorType=local:MainWindow}}"/> </Grid> </Grid> </Window>
2) MainWindow.xaml.cs
代碼如下;
當(dāng)屏保啟動(dòng)后需要注意如下
將鼠標(biāo)設(shè)置為不可見(jiàn)Cursors.None
;
將窗體設(shè)置為最大化WindowState.Maximized
;
WindowStyle
設(shè)置為"None"
;
注意監(jiān)聽(tīng)鼠標(biāo)按下和鍵盤按鍵則退出屏保;
using System; using System.Collections.ObjectModel; using System.Globalization; using System.IO; using System.Windows; using System.Windows.Input; using System.Windows.Threading; namespace ScreenSaver { /// <summary> /// MainWindow.xaml 的交互邏輯 /// </summary> public partial class MainWindow : Window { public static readonly DependencyProperty stringCollectionProperty = DependencyProperty.Register("stringCollection", typeof(ObservableCollection<string>), typeof(MainWindow), new PropertyMetadata(null)); public static readonly DependencyProperty HourProperty = DependencyProperty.Register("Hour", typeof(string), typeof(MainWindow), new PropertyMetadata(null)); public static readonly DependencyProperty MinuteProperty = DependencyProperty.Register("Minute", typeof(string), typeof(MainWindow), new PropertyMetadata(null)); public static readonly DependencyProperty SecondProperty = DependencyProperty.Register("Second", typeof(string), typeof(MainWindow), new PropertyMetadata(null)); public static readonly DependencyProperty DateProperty = DependencyProperty.Register("Date", typeof(string), typeof(MainWindow), new PropertyMetadata()); private readonly DispatcherTimer timer = new DispatcherTimer(); public MainWindow() { InitializeComponent(); Loaded += delegate { WindowState = WindowState.Maximized; Mouse.OverrideCursor = Cursors.None; var date = DateTime.Now; Hour = date.ToString("HH"); Minute = date.ToString("mm"); Date = $"{date.Month} / {date.Day} {CultureInfo.CurrentCulture.DateTimeFormat.GetDayName(date.DayOfWeek)}"; stringCollection = new ObservableCollection<string>(); var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Images"); var directoryInfo = new DirectoryInfo(path); foreach (var item in directoryInfo.GetFiles()) { if (Path.GetExtension(item.Name) != ".jpg") continue; stringCollection.Add(item.FullName); } timer.Interval = TimeSpan.FromSeconds(1); timer.Tick += delegate { date = DateTime.Now; Hour = date.ToString("HH"); Minute = date.ToString("mm"); Date = $"{date.Month} / {date.Day} {CultureInfo.CurrentCulture.DateTimeFormat.GetDayName(date.DayOfWeek)}"; }; timer.Start(); }; MouseDown += delegate { Application.Current.Shutdown(); }; KeyDown += delegate { Application.Current.Shutdown(); }; } public ObservableCollection<string> stringCollection { get => (ObservableCollection<string>)GetValue(stringCollectionProperty); set => SetValue(stringCollectionProperty, value); } public string Hour { get => (string)GetValue(HourProperty); set => SetValue(HourProperty, value); } public string Minute { get => (string)GetValue(MinuteProperty); set => SetValue(MinuteProperty, value); } public string Second { get => (string)GetValue(SecondProperty); set => SetValue(SecondProperty, value); } public string Date { get => (string)GetValue(DateProperty); set => SetValue(DateProperty, value); } } }
關(guān)于“怎么用WPF代碼實(shí)現(xiàn)Windows屏保制作”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。
分享文章:怎么用WPF代碼實(shí)現(xiàn)Windows屏保制作
網(wǎng)站地址:http://jinyejixie.com/article36/igoppg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、微信公眾號(hào)、小程序開(kāi)發(fā)、軟件開(kāi)發(fā)、品牌網(wǎng)站制作、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)