2016-02-18 104 views
1

我正在开发一个基本的winform应用程序,我想用c#更改壁纸,图像未被拉伸以适合屏幕尺寸的问题。更改使用c的壁纸样式#

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Runtime.InteropServices; 

namespace DailyWallpaper 
{ 
    class WallpaperChanger 
    { 
     [DllImport("user32.dll", CharSet = CharSet.Auto)] 
     private static extern Int32 SystemParametersInfo(
      UInt32 action, UInt32 uParam, String vParam, UInt32 winIni); 

     private static readonly UInt32 SPI_SETDESKWALLPAPER = 0x14; 
     private static readonly UInt32 SPIF_UPDATEINIFILE = 0x01; 
     private static readonly UInt32 SPIF_SENDWININICHANGE = 0x02; 

     public void SetWallpaper(String path) 
     { 
      SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, path, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE); 
     } 
    } 
} 

任何人都可以告诉我如何纠正这个错误,提前谢谢。

回答

1

尝试执行以下代码:

public void SetWallpaper(String path) 
    { 
     RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true); 
     key.SetValue(@"WallpaperStyle", 2.ToString()); 
     key.SetValue(@"TileWallpaper", 0.ToString()); 

     SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, path, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE); 
    } 

编辑:

您还可以修改您的函数,并传递一种风格吧:

public void SetWallpaper(String path, Style style) 
    { 
     RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true); 
     if (style == Style.Stretched) 
     { 
      key.SetValue(@"WallpaperStyle", 2.ToString()); 
      key.SetValue(@"TileWallpaper", 0.ToString()); 
     } 
     if (style == Style.Centered) 
     { 
      key.SetValue(@"WallpaperStyle", 1.ToString()); 
      key.SetValue(@"TileWallpaper", 0.ToString()); 
     } 
     if (style == Style.Tiled) 
     { 
      key.SetValue(@"WallpaperStyle", 1.ToString()); 
      key.SetValue(@"TileWallpaper", 1.ToString()); 
     } 

     SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, path, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE); 
    } 
+0

谢谢您的回答 –

+0

@SijoJose欢迎您!让我知道,如果这是你需要:) – Chogart

+0

这就是我真正想要的,谢谢你的帮助。 –