Wallpaper.cs
Description du code
Wallpaper.cs est un fichier du projet PhotoBrol.Ce fichier est situé dans /var/www/bin/sniplets/bibliobrol/photobrol/.
Projet PhotoBrol :
Editeur d'images en CSharp.
Code source ou contenu du fichier
Code c# (Wallpaper.cs) (249 lignes)
// Wallpaper.cs - Une classe pour afficher un fond d'écran sous Windows // Conçue et réalisée par Gulix // Contact : gulix33xp@yahoo.fr - http://gulix.free.fr // Pour plus d'informations, lire le fichier d'informations fourni avec la classe using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Runtime.InteropServices; using System.IO; using System.Data; using Microsoft.Win32; public class Wallpaper { // Variables et Fonctions nécessaires à l'affichage du Wallpaper const int SPI_SETDESKWALLPAPER = 20; const int SPIF_UPDATEINIFILE = 0x01; const int SPIF_SENDWININICHANGE = 0x02; [DllImport("user32.dll", CharSet = CharSet.Auto)] static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni); [DllImport("user32.dll")] public static extern void SetSysColors(int elementCount, int[] colorNames, int[] colorValues); // Enumération permettant de fixer le style d'affichage public enum Affichage { centrer, mosaïque, etirer, ajuster } // On déclare les membres private string nomfichier; private Affichage affichage; // Style d'affichage private System.Drawing.Color couleurFond; // Couleur de fond du bureau // Constructeur de la classe Wallpaper public Wallpaper(string fichier, Affichage affich, Color fond) { this.nomfichier = fichier; this.affichage = affich; this.couleurFond = fond; } // GetNomCourt // permet de retrouver le nom du fichier, sans son chemin complet public string GetNomCourt() { string[] split; char[] separateur ={ '\\' }; int max; split = this.nomfichier.Split(separateur); max = split.GetUpperBound(0); return split[max]; } // GetRepertoire // permet de retrouver le repertoire contenant l'image public string GetRepertoire() { string[] split; string[] join; char[] separateur ={ '\\' }; int max; split = this.nomfichier.Split(separateur); max = split.GetUpperBound(0); for (int i = 0; i < (max); i++) { join[i] = split[i]; } return String.Join("\\", join) + "\\"; } // GetImageHauteur // permet d'obtenir la hauteur du fichier image, en pixels public int GetImageHauteur() { int retour = 0; try { retour = image.Height; } catch { retour = -1; } return retour; } // GetImageLargeur // permet d'obtenir la largeur du fichier image, en pixels public int GetImageLargeur() { int retour = 0; try { retour = image.Width; } catch { retour = -1; } return retour; } /// <summary> /// Modify wallpaper and desktop's background color /// </summary> /// <returns>True if no problems occurs</returns> public bool Afficher() { try { // On recopie l'image dans les fichiers temporaires au format bitmap System.Drawing.Image image; if (this.affichage == Affichage.ajuster) { image = System.Drawing.Image.FromFile(this.Ajustement()); } else { image = System.Drawing.Image.FromFile(this.GetRepertoire() + this.GetNomCourt()); } string fichierTemporaire = Path.Combine(Path.GetTempPath(), "wallpaper.bmp"); image.Save(fichierTemporaire, System.Drawing.Imaging.ImageFormat.Bmp); // On modifie le style d'affichage dans la base de registre RegistryKey cle = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true); if (this.affichage == Affichage.etirer) { cle.SetValue(@"WallpaperStyle", 2.ToString()); cle.SetValue(@"TileWallpaper", 0.ToString()); } if (this.affichage == Affichage.centrer) { cle.SetValue(@"WallpaperStyle", 1.ToString()); cle.SetValue(@"TileWallpaper", 0.ToString()); } if (this.affichage == Affichage.mosaïque) { cle.SetValue(@"WallpaperStyle", 1.ToString()); cle.SetValue(@"TileWallpaper", 1.ToString()); } if (this.affichage == Affichage.ajuster) { cle.SetValue(@"WallpaperStyle", 1.ToString()); cle.SetValue(@"TileWallpaper", 0.ToString()); } // On utilise les fonctions de la DLL user32 pour afficher le wallpaper SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, fichierTemporaire, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE); int[] elementArray = { 1 }; int[] elementValues = { ColorTranslator.ToWin32(this.GetCouleurFond()) }; // et modifier la couleur de fond du bureau SetSysColors(1, elementArray, elementValues); return true; } catch { return false; } } // GetEcranLargeur // permet d'obtenir la largeur de l'écran public static int GetEcranLargeur() { return System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width; } // GetEcranHauteur // permet d'obtenir la hauteur de l'écran public static int GetEcranHauteur() { return System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height; } // Ajustement // Réalise l'ajustement de l'image si nécessaire // retourne le chemin vers le fichier ajusté private string Ajustement() { string fichierRetour; if ((this.GetImageHauteur() <= GetEcranHauteur()) && (this.GetImageLargeur() <= GetEcranLargeur())) { // Pas d'ajustement nécessaire, on retourne le nom du fichier original fichierRetour = this.nomfichier; } else { // On calcule les nouvelles dimensions double ratio = ((double)GetEcranHauteur()) / ((double)this.GetImageHauteur()); if (ratio > (((double)GetEcranLargeur()) / ((double)this.GetImageLargeur()))) { ratio = ((double)GetEcranLargeur()) / ((double)this.GetImageLargeur()); } int nouvelleLargeur = (int)(((double)this.GetImageLargeur()) * ratio); int nouvelleHauteur = (int)(((double)this.GetImageHauteur()) * ratio); // On crée le support de la nouvelle image System.Drawing.Image imageAjuster = null; // On crée la nouvelle image à partir de l'original, et de la nouvelle taille imageAjuster.Save(Path.Combine(Path.GetTempPath(), "ajuster.bmp"), System.Drawing.Imaging.ImageFormat.Bmp); imageAjuster.Dispose(); fichierRetour = Path.Combine(Path.GetTempPath(), "ajuster.bmp"); } return fichierRetour; } // Méthodes d'accès aux paramètres // permet de limiter l'accès aux paramètres public Affichage GetAffichage() { return this.affichage; } public void SetAffichage(Affichage aff) { this.affichage = aff; } public Color GetCouleurFond() { return this.couleurFond; } public void SetCouleurFond(Color col) { this.couleurFond = col; } public override string ToString() { return this.GetNomCourt(); } }
Structure et Fichiers du projet
Afficher/masquer...Icône | Nom | Taille | Modification |
Icône | Nom | Taille | Modification |
| _ | Répertoire parent | 0 octets | 1731619384 14/11/2024 22:23:04 |
| _ | filters | 0 octets | 1541007171 31/10/2018 18:32:51 |
| _ | math | 0 octets | 1541007171 31/10/2018 18:32:51 |
| _ | Image | 0 octets | 1541007171 31/10/2018 18:32:51 |
Icône | Nom | Taille | Modification | Action |
Icône | Nom | Taille | Modification | Action |
|.cs | Wallpaper.cs | 8.86 Ko | 31/10/2018 18:32:23 | -refusé- |
Utilisation de l'explorateur de code
- Navigation :
- Un clic sur une icône de répertoire ouvre ce répertoire pour en afficher les fichiers.
- Lorsque le répertoire en cours ne contient pas de sous-répertoires il est possible de remonter vers le répertoire parent.
- La structure de répertoires en treetable (tableau en forme d'arborescence) n'est plus possibledans cette version.
- Un clic sur une icône de fichier ouvre ce fichier pour en afficher le code avec la coloration syntaxique adaptée en fonction du langage principal utilisé dans le fichier.
- Affichage :
- Il est possible de trier les répertoires ou les fichiers selon certains critères (nom, taille, date).
- Actions :
- Les actions possible sur les fichiers dépendent de vos droits d'utilisateur sur le site. Veuillez activer le mode utilisateur pour activer les actions.
Version en cache
14/11/2024 22:23:04 Cette version de la page est en cache (à la date du 14/11/2024 22:23:04) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/10/2009, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/cs-photobrol-source-rf-model/Wallpaper.cs.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.