首页 > 系统相关 >编写一个小而强大的 Windows 动态屏保壁纸

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

时间:2024-01-15 10:13:32浏览次数:42  
标签:控件 小而 Windows mediaPlayerElement 120 屏保 壁纸

写在前面

两年前我做了第一个开源软件 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,mediaPlayerElement,120,屏保,壁纸
From: https://www.cnblogs.com/he55/p/17959763

相关文章

  • Windows10安装Docker
    一、安装DockerDesktopforWindows在官网下载DockerDesktopforWindows:https://docs.docker.com/desktop/install/windows-install/;双击下载的DockerforWindowsInstaller安装文件,一路Next,点击Finish完成安装。注意:保持默认选择“InstallrequiredWindowscompo......
  • 如何解决Windows自带远程频繁断线
    具体场景就是从公司远程家里电脑(外网远程)。Windows自带远程非常好用,比向日葵、todesk那些好用太多了,高清免费,但是使用过程中有个比较严重问题,不稳定,频繁断线,但是内网中,几乎不会出现此问题,所以我认为是公司网络的问题。 解决这个问题,也是偶然的一个尝试。之前技术总监(已跑路)教......
  • 如何解决Windows电脑自动黑屏问题?
    这几天上班,遭遇了一个问题,电脑在静置不动几分钟后就会自动切换至黑屏,看到一个提问解决了这个问题,下面,我将详细分享解决方法,希望对遇到同样问题的你有所帮助。参考链接:https://www.zhihu.com/question/360985417第一步设置如下:步骤一:点击左下角的搜索栏,输入“锁屏”,然后进入锁......
  • Windows用注册表修改键盘映射(扫描码)
    title:Windows用注册表修改键盘映射(扫描码)date:2020-10-18categories:编程tags:-键盘-注册表-Windows前言使用C/C++代码方式修改可见下篇《用C/C++(Win32API)写软件修改键位》据说Qwerty键盘是为了降低打字员打字速度,防止打字机卡机所作出的妥协。那么现在的键盘是......
  • windows下打包go项目放在linux上部署
    1.打开命令提示符或终端,并导航到包含main.go的目录。2.使用以下命令进行交叉编译:GOOS=linuxGOARCH=amd64gobuild-omyprogram 这将生成一个名为myprogram的可执行文件,该文件是为Linux上的AMD64架构编译的。5.现在,你可以将生成的myprogram文件复制到Linux系统上运行。......
  • Windows合集
    使用技巧:1.dos窗口(磁盘操作系统)2.显示或隐藏桌面通用图标:搜索框输入icon3.显示扩展名:(区分文件类型)计算机-组织-布局-菜单栏-工具-文件夹选项-查看-隐藏文件拓展名勾掉4.telnetip地址端口号可以查看对方是否开启端口服务端口号Mysql端口号:3306Rdp远程桌面连接:3......
  • 启用DoH(DNS-over HTTPS)在Windows、Android、IOS平台
    做个备忘录,记录下主力设备Win11、安卓、IOS、路由器、浏览器配置DoH(DNS-overHTTPS)的过程Windows11设置-网络和Internet-WLAN-硬件属性-DNS服务器分配Win11原生支持的DoH服务:IPv4Google:8.8.8.8and8.8.4.4Cloudflare:1.1.1.1and1.0.0.1Quad9:9.9.9.9and149.112......
  • 利用Linux命令高效查找大文件为windows系统瘦身
    Windows系统是大家平时使用得比较多的办公桌面系统,但是,作为一名运维工程师,Linux命令行才是我的首选。最近在折腾Git这款很强大的工具。在瞎折腾的过程中发现一个比较好用的功能:一条Linux命令,找出你系统中的大文件。在此跟大家分享一下。第一步:安装Git考虑到一些平台不支持发链接,在......
  • Windows部署前后端分离项目
    @[TOC]此项目的基础版本为若依的前后端分离版本,不一定适合所有情况,仅供参考,用于备忘后端修改数据库连接根据需要修改ruoyi-admin中resources目录的application-druid.yml#数据源配置spring:datasource:type:com.alibaba.druid.pool.DruidDataSourcedrive......
  • Mac上运行windows软件-GPTK
    GPTK官网https://www.applegamingwiki.com/wiki/Game_Porting_Toolkit使用Whisky安装GPTKWhiskyhttps://github.com/Whisky-App/Whisky把下载的Whisky.app移动到应用程序中运行,选择下一步开始安装GPTK......