IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Changement de couleur dynamique


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 105
    Points : 58
    Points
    58
    Par défaut Changement de couleur dynamique
    Bonjour,
    J'ai fais une application WPF c# avec une allure définit dans <Application.Ressources>.

    Dans cette ressource, je définit quelques couleurs de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Color x:Key="Couleur1" commentaire:color="Bleu foncé">#FF000DC2</Color>
    Puis j'utilise ces couleurs (avec DynamicRessource) pour créer des brushes (SolidColorBrush ou LinearGradientBrush) et enfin toux ces éléments pour créer mes style pour chaque contrôle y compris la fenêtre de base et toujours avec des DynamicRessource.

    Je veut maintenant proposer une deuxième variation aux utilisateurs j'ai donc créé une méthode qui change les couleurs et uniquement elles avec des commandes comme celles-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Current.Resources["Couleur1"] = (Color)ColorConverter.ConvertFromString("#FF252525");
    Quand je teste j'ai bien les couleurs de base qui change (celles que je redéfinit avec la ligne ci-dessus) mais rien du reste même si je relance InitializeComponent().

    Comment puis-je faire ?
    Merci

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 105
    Points : 58
    Points
    58
    Par défaut
    Bonjour,
    J'ai finalement résolu mon problème faisant plusieurs resourcesDictionnary (une solution trouvé ici sur un post de 2008).
    1. J'ai d'abord sortis seulement les couleurs et là quand je les changent seul les couleurs uniques changent. 2 dictionnary 1 de couleur que j'efface et remplace par un autre et le deuxième avec tout le reste que je ne change pas.
    2. J'ai alors créé un second ressourceDictionnary avec toutes les brosses. Il est le même tout le temps puisqu'il appel les couleurs avec des dynamicResource. 3 dictionnary, celui des couleur que j'efface puis remplace, celui des brosse que j'efface puis recharge et celui de tout le reste. Là ça marche parfaitement une seul fois. La deuxième fois c'est comme si le dictionnary de "tout le reste" était supprimé.
    3. J'ai donc effacé les 3 dictionnary puis rechargé les 3 bons à la place (celui de couleur qui a changé et les 2 autres sont les mêmes). La ça marche parfaitement. Mais dans mon dictionnary de "tout le reste" j'ai des mise en forme de la fenêtre et on les vois passer.

    Ma question c'est donc :
    • Soit à partir de la solution 2 comment faire pour que le tout le reste ne se décharge pas.
    • Soit là partir de la solution 3 comment faire en sorte de figer la fenêtre pendant mon actualisation.


    Merci d'avance.

    Mon code de la solution 3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //On supprime les deux premiers dictionnaires (Celui des couleurs et celui des brosses)    
    Application.Current.Resources.MergedDictionaries.RemoveAt(0);
    Application.Current.Resources.MergedDictionaries.RemoveAt(0);
    Application.Current.Resources.MergedDictionaries.RemoveAt(0);
     
    ResourceDictionary skin = new ResourceDictionary();
     
    //Si le fichier .xaml du dictionnaire n'est pas compilé
    skin = (ResourceDictionary)XamlReader.Load(new FileStream("Ressources\\RougeEtNoir.xaml", FileMode.Open));
    Application.Current.Resources.MergedDictionaries.Add(skin);
    skin = (ResourceDictionary)XamlReader.Load(new FileStream("Ressources\\Brosses.xaml", FileMode.Open));
    Application.Current.Resources.MergedDictionaries.Add(skin);
    skin = (ResourceDictionary)XamlReader.Load(new FileStream("Ressources\\MiseEnForme1.xaml", FileMode.Open));
    Application.Current.Resources.MergedDictionaries.Add(skin);

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/01/2016, 19h37
  2. Changement de couleur dynamique
    Par Baba75AB dans le forum Flash
    Réponses: 2
    Dernier message: 03/05/2012, 15h47
  3. Tchart changement couleur dynamique
    Par nbutin dans le forum C++Builder
    Réponses: 4
    Dernier message: 20/07/2011, 08h02
  4. changement de couleur dynamique
    Par torn33260 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/09/2008, 16h20
  5. Réponses: 4
    Dernier message: 15/12/2006, 14h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo