最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用WPF實現(xiàn)Windows屏保的制作

 更新時間:2022年07月26日 10:42:51   作者:驚鏵  
屏保程序的本質(zhì)上就是一個Win32?窗口應(yīng)用程序。本文將利用WPF實現(xiàn)Windows屏保的制作,文中的示例代碼簡潔易懂,對我們學(xué)習(xí)WPF有一定幫助,感興趣的可以了解一下

介紹

框架使用.NET452;

Visual Studio 2019;

項目使用 MIT 開源許可協(xié)議;

更多效果可以通過GitHub[1]|碼云[2]下載代碼;

也可以自行添加天氣信息等。

正文

屏保程序的本質(zhì)上就是一個Win32 窗口應(yīng)用程序;

把編譯好一個窗口應(yīng)用程序之后,把擴(kuò)展名更改為 scr,于是你的屏幕保護(hù)程序就做好了;

選中修改好的 scr 程序上點擊右鍵,可以看到一個 安裝 選項,點擊之后就安裝了;

安裝之后會立即看到我們的屏幕保護(hù)程序已經(jīng)運(yùn)行起來了;

處理屏幕保護(hù)程序參數(shù)如下

/s 屏幕保護(hù)程序開始,或者用戶點擊了 預(yù)覽 按鈕;

/c 用戶點擊了 設(shè)置按鈕;

/p 用戶選中屏保程序之后,在預(yù)覽窗格中顯示;

實現(xiàn)代碼

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)屏保啟動后需要注意如下

  • 將鼠標(biāo)設(shè)置為不可見Cursors.None;
  • 將窗體設(shè)置為最大化WindowState.Maximized;
  • WindowStyle設(shè)置為"None";
  • 注意監(jiān)聽鼠標(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實現(xiàn)Windows屏保的制作的文章就介紹到這了,更多相關(guān)WPF制作Windows屏保內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#中static void Main(string[] args) 參數(shù)示例詳解

    C#中static void Main(string[] args) 參數(shù)示例詳解

    這篇文章主要介紹了C#中static void Main(string[] args) 參數(shù)詳解,本文通過具體示例給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2017-03-03
  • C#結(jié)合JavaScript對Web控件進(jìn)行數(shù)據(jù)輸入驗證的實現(xiàn)方法

    C#結(jié)合JavaScript對Web控件進(jìn)行數(shù)據(jù)輸入驗證的實現(xiàn)方法

    在 Web 應(yīng)用的錄入界面,數(shù)據(jù)驗證是一項重要的實現(xiàn)功能,數(shù)據(jù)驗證是指確認(rèn) Web 控件輸入或選擇的數(shù)據(jù),本文我們將介紹如何通過C# 后端及JavaScript 前端對 Web 控件進(jìn)行數(shù)據(jù)輸入有效性的驗證,感興趣的朋友可以參考一下
    2024-05-05
  • C#?wpf嵌入winform控件的示例詳解

    C#?wpf嵌入winform控件的示例詳解

    wpf的強(qiáng)大界面能力,再加上winform的性能以及靈活性,那基本上什么界面都能夠做的很好,本文我們就來看看如何在C#?wpf中嵌入winform控件吧
    2024-03-03
  • c# AcceptEx與完成端口(IOCP)結(jié)合的示例

    c# AcceptEx與完成端口(IOCP)結(jié)合的示例

    這篇文章主要介紹了c# AcceptEx與完成端口(IOCP)結(jié)合的示例,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03
  • C#中Abstract 、Virtual和Override的使用及區(qū)別

    C#中Abstract 、Virtual和Override的使用及區(qū)別

    C#中virtual,abstract,override用于方法重載,子類覆蓋了父類的相同方法,父類中的實現(xiàn)不可能再被外面調(diào)用。本文給大家重點介紹C#中Abstract 、Virtual和Override的使用及區(qū)別,需要的朋友參考下吧
    2021-06-06
  • c#中CAD文件讀取實例

    c#中CAD文件讀取實例

    在本篇文章里小編給大家整理的是一篇關(guān)于c#中CAD文件讀取實例內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-05-05
  • c#文件的I/O基本操作

    c#文件的I/O基本操作

    System.IO命名空間包含允許在數(shù)據(jù)流和文件上進(jìn)行同步,異步及寫入的類型,下面是關(guān)于c#文件的I/O基本操作講解,需要的朋友可以參考下
    2014-03-03
  • C#獲取項目指定目錄下文件的方法

    C#獲取項目指定目錄下文件的方法

    這篇文章主要介紹了C#獲取項目指定目錄下文件的方法,涉及C#操作目錄及文件的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • C#使用QRCode生成海報圖并嵌入定位帶logo的二維碼

    C#使用QRCode生成海報圖并嵌入定位帶logo的二維碼

    這篇文章主要為大家詳細(xì)介紹了C#如何使用QRCode生成海報圖并嵌入定位帶logo的二維碼,文中的示例代碼講解詳細(xì),需要的小伙伴可以參考下
    2024-03-03
  • C# 實現(xiàn)TXT文檔轉(zhuǎn)Table的示例代碼

    C# 實現(xiàn)TXT文檔轉(zhuǎn)Table的示例代碼

    這篇文章主要介紹了C# 實現(xiàn)TXT文檔轉(zhuǎn)Table的示例代碼,幫助大家更好的理解和學(xué)習(xí)c#,感興趣的朋友可以了解下
    2020-12-12

最新評論

宁武县| 辽宁省| 孟津县| 靖宇县| 会东县| 怀集县| 青龙| 通化市| 安乡县| 隆昌县| 昌江| 鹤岗市| 苍梧县| 罗江县| 改则县| 佛学| 肇源县| 辽阳县| 霍邱县| 沈丘县| 清新县| 祥云县| 军事| 玉龙| 噶尔县| 宁津县| 阜新市| 隆尧县| 灵山县| 建瓯市| 安吉县| 宁武县| 澄迈县| 靖江市| 剑河县| 广元市| 双辽市| 珠海市| 平山县| 九寨沟县| 诏安县|