将桌面设置为内存中的图像

时间:2018-05-02 16:56:46

标签: c#

我制作了一个小应用程序,允许我将桌面背景设置为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);
}

0 个答案:

没有答案