Din core-ul de .NET, nu avem nici o posibilitate sa schimbam imaginea de fundal a sistemului de operare sau sa schimbam modul in care se afiseaza - in mod direct. Ca sa putem face acest lucru, putem sa schimbam valorile din registri care stocheaza modul in care se afiseaza imaginea de fundal. Iar imaginea de fundal se schimba apeland direct API sistemului de operare.
Sub directorul userului curent, in path-ul "ControlPanel\Desktop" o sa gasim cheile necesare pentru a seta modul in care se afiseaza imagina de fundal.
Cheia WallpaperStyle impreuna cu TileWallpaper ne permite sa setam felul in care se centreaza imaginea. Urmatarele combinatii de valori se pot face:
Enjoy!
Sub directorul userului curent, in path-ul "ControlPanel\Desktop" o sa gasim cheile necesare pentru a seta modul in care se afiseaza imagina de fundal.
Cheia WallpaperStyle impreuna cu TileWallpaper ne permite sa setam felul in care se centreaza imaginea. Urmatarele combinatii de valori se pot face:
- (WallpaperStyle = 2, TileWallpaper = 0) - se face stretch la imagine ca sa acopere tot spatil ecranului
- (WallpaperStyle = 0, TileWallpaper = 1) - se face tile pe imagine pana cand ecranul este umplut
- (WallpaperStyle = 0, TileWallpaper = 0) - imaginea se afiseaza centrat
public enum Style
{
Tiled,
Centered,
Stretched
}
...
RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true);
switch (style)
{
case Style.Stretched:
key.SetValue(@"WallpaperStyle", 2.ToString());
key.SetValue(@"TileWallpaper", 0.ToString());
break;
case Style.Centered:
key.SetValue(@"WallpaperStyle", 1.ToString());
key.SetValue(@"TileWallpaper", 0.ToString());
break;
case Style.Tiled:
key.SetValue(@"WallpaperStyle", 1.ToString());
key.SetValue(@"TileWallpaper", 1.ToString());
break;
}
Am vazut cum putem seta ca imaginea de fundal sa se afiseze in diferite moduri. Urmatorul pas este sa vedem cum putem sa setam din cod imaginea de fundal. Pentru acest lucru trebuie sa facem apel la API de windows si sa ne definim urmatoarea metoda:[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);
Prin intermediul acestei metode putem seta sau obtine valoarea parametriilor din sistemul de operare. Actiunea care permite setarea imaginii din fundal are valoare 20.SystemParametersInfo(
20, // Actiunea pentru setarea imaginii de fundal.
0,
imageFilePath, // Locatia spre imaginea noastra
0x01 | 0x02);
Enjoy!
Comments
Post a Comment