最新国产好看的视频,伊人天堂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)運行起來了;

處理屏幕保護(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的強大界面能力,再加上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

最新評論

额济纳旗| 洪湖市| 克东县| 天峻县| 南城县| 都昌县| 镇巴县| 肃宁县| 车致| 吉木乃县| 内黄县| 延长县| 英山县| 泾源县| 防城港市| 西藏| 岐山县| 科技| 海原县| 鞍山市| 万荣县| 日喀则市| 梁平县| 宝山区| 吴忠市| 安仁县| 大冶市| 喀喇沁旗| 屏东市| 鹤峰县| 永兴县| 吕梁市| 大方县| 福建省| 莒南县| 丹阳市| 拜城县| 南岸区| 兴化市| 商洛市| 潜江市|