以编程方式设置壁纸始终平铺图像

时间:2013-09-21 16:05:03

标签: c# winapi pinvoke .net-4.5

我有一段代码来设置桌面墙纸,但图像始终是平铺而不是拉伸。

using (RegistryKey rkWallPaper = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", true))
{
    rkWallPaper.SetValue("WallpaperStyle", 2);
    rkWallPaper.SetValue("TileWallpaper", 0);
}
return SystemParametersInfo(0x14, 0, imagePath, 0x01 | 0x02);

正确设置了注册表值,但是当我转到Personalize屏幕时,我看到该设置为Tiled

我正在运行Windows 8.1预览,以防万一。

1 个答案:

答案 0 :(得分:1)

这些注册表值是字符串,而不是整数。您可以从Regedit.exe中获知,它将值显示为REG_SZ而不是REG_DWORD。这应该解决它:

  rkWallPaper.SetValue("WallpaperStyle", "2");
  rkWallPaper.SetValue("TileWallpaper", "0");

请注意添加的双引号。