日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

编写一个小而强大的 Windows 动态屏保壁纸

發布時間:2024/1/16 windows 83 coder
生活随笔 收集整理的這篇文章主要介紹了 编写一个小而强大的 Windows 动态屏保壁纸 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫在前面

兩年前我做了第一個開源軟件 DreamScene2 動態桌面,如今受到了很多人的喜歡,這增加了我繼續做好開源軟件的信心。之前的這個軟件一直有人希望我加入一個設置屏保壁紙的功能,因為 DreamScene2 就是一個單純的動態桌面的軟件,所以一直沒有加入這個功能。今天我帶來一個新的開源軟件,軟件依然是小而強大,簡潔并且快速。

歡迎 Star 和 Fork: https://github.com/he55/SonomaWallpaper

介紹

Sonoma Wallpaper 是首款將 macOS Sonoma 4k 120 幀動態屏保壁紙帶到 Windows 11 的軟件,壁紙包含了自然景觀、城市景觀、水下景觀和地球四個主題的屏保共有 134 個 4k 屏保壁紙。


功能

  • 4k 120 幀率視頻播放
  • 多語言
  • 高 dpi 支持
  • 深色模式
  • 多任務下載
  • Windows 11 支持

如何使用

選中已下載的視頻壁紙,然后打開 顯示為屏幕保護程序 開關,程序會在 2 分鐘系統無操作時自動播放屏保壁紙。

下載壁紙

  • 選擇一個壁紙點擊下載
  • 等待壁紙下載完成
  • 壁紙下載完成后,可以點擊預覽按鈕看效果

視頻播放功能代碼

在解碼 4k 120 幀視頻的時候我試過 VLC、迅雷的 APlayer、mpv、ffmpeg、PotPlayer 這些引擎或播放器,發現在 Windows 10 上它們對 120 幀視頻支持的都不好。最后發現 Windows 11 已經原生支持了 120 幀視頻播放,但只有 UWP 和 WinUI3 程序原生支持。WPF 要使用 UWP 的控件需要安裝 Microsoft.Toolkit.Wpf.UI.XamlHost 這個 NuGet 包,這個包可以讓 Win32 程序調用 UWP 的控件。包安裝后在 xaml 文件中添加名稱空間 xmlns:xamlhost="clr-namespace:Microsoft.Toolkit.Wpf.UI.XamlHost;assembly=Microsoft.Toolkit.Wpf.UI.XamlHost",然后添加 WindowsXamlHost 控件用來顯示 UWP 的 MediaPlayerElement 媒體播放控件。

完整代碼如下

<Window x:Class="WpfApp21.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:local="clr-namespace:WpfApp21"
        xmlns:xamlhost="clr-namespace:Microsoft.Toolkit.Wpf.UI.XamlHost;assembly=Microsoft.Toolkit.Wpf.UI.XamlHost"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <xamlhost:WindowsXamlHost
        ChildChanged="WindowsXamlHost_ChildChanged"
        InitialTypeName="Windows.UI.Xaml.Controls.MediaPlayerElement" />
</Window>

添加 ChildChanged 事件用來處理 MediaPlayerElement 控件創建成功后的要做的事情

  • Stretch 設置視頻拉伸模式
  • Source 設置播放文件路徑
  • AutoPlay 設置自動播放
  • IsMuted 設置靜音
  • IsLoopingEnabled 設置循環播放
private void WindowsXamlHost_ChildChanged(object sender, EventArgs e)
{
    MediaPlayerElement mediaPlayerElement = (MediaPlayerElement)((WindowsXamlHost)sender).Child;
    if (mediaPlayerElement != null)
    {
        mediaPlayerElement.Stretch = Windows.UI.Xaml.Media.Stretch.UniformToFill;
        mediaPlayerElement.Source = MediaSource.CreateFromUri(new Uri("C:\wallpapers\comp_LW_L001_C006_PSNK_DENOISE_v02_SDR_PS_FINAL_20180709_FRC_sdr_4k_qp20_240p_t2160_tsa.mov"));
        mediaPlayerElement.AutoPlay = true;
        mediaPlayerElement.MediaPlayer.IsMuted = true;
        mediaPlayerElement.MediaPlayer.IsLoopingEnabled = true;
    }
}

總結

以上是生活随笔為你收集整理的编写一个小而强大的 Windows 动态屏保壁纸的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。