我制作了一个小应用程序,允许我将桌面背景设置为GIF。它通过保存GIF的所有帧,然后循环并将桌面设置为每个帧来实现此目的。
然而,这很慢并且在某些情况下需要大约100-200ms(如果我想以24fps显示GIF,我需要将这个时间缩短到41ms)。
有没有办法将桌面背景设置为内存中加载的图像? 我可以使用虚拟文件系统存储&显示帧?
将桌面设置为图像的代码:
public static void SetDesktop(string filepath, Style style)
{
RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true);
switch (style)
{
case Style.Tiled:
key.SetValue(@"WallpaperStyle", 1);
key.SetValue(@"TileWallpaper", 1);
break;
case Style.Centered:
key.SetValue(@"WallpaperStyle", 1);
key.SetValue(@"TileWallpaper", 0);
break;
case Style.Stretched:
key.SetValue(@"WallpaperStyle", 2);
key.SetValue(@"TileWallpaper", 0);
break;
}
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, filepath, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
}