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++/CLI Discussion :

écrire du texte en couleur varié


Sujet :

C++/CLI

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 99
    Points : 76
    Points
    76
    Par défaut écrire du texte en couleur varié
    Bonjour,

    Je cherche si il est possible d'écrire une ligne de texte avec des mots de plusieurs couleurs. j'utilise Visual C++ 2005 express en Winform. Dans un label (je ne pense pas) ??? - directement sur la feuille sinon.
    Peut-être avec la class graphics ? !!!
    ex:
    Je m'appelle Patrice.

    Merci pour un lien ou un exemple.

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    c'est une combinaison des deux

    tu dérives de la classe Label et tu surchages la méthode paint:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    	ref class MonLabel : public System::Windows::Forms::Label
    	{
    	protected:
    		virtual void OnPaint(PaintEventArgs ^e) override
    		{
    			array<Drawing::Brush ^> ^mesCouleurs = { Brushes::Red, Brushes::Orange, Brushes::Green, Brushes::Blue};
    			int br = 0;
    			String ^chaine = Text;
     
    			List<String ^> ^listString = gcnew List<String ^>();
    			StringBuilder ^sb = gcnew StringBuilder();
    			for (int i = 0 ; i < chaine->Length ; i++)
    			{
    				if (chaine[i] == ' ' || chaine[i] == '\'')
    				{
    					if (chaine[i] == '\'')
    						sb->Append(chaine[i]);
    					listString->Add(sb->ToString());
    					sb = gcnew StringBuilder();
    				}
    				else
    					sb->Append(chaine[i]);
    			}
    			listString->Add(sb->ToString());
     
    			float startX = 0;
    			for each (String ^s in listString)
    			{
    				e->Graphics->DrawString(s, Font, mesCouleurs[br], startX, 0);
    				startX += e->Graphics->MeasureString(s, Font).Width;
    				br++;
    				if (br >= mesCouleurs->Length)
    					br = 0;
    			}
    			Width = (int)startX;
    		}
    	};
    ensuite, il ne te reste plus qu'à initialiser ton controle dans le constructeur de ta classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    			MonLabel ^ monLabel = gcnew MonLabel();
    			AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			monLabel->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 8.0F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, static_cast<System::Byte>(0)));
    			monLabel->Text = "Je m'appelle Patrice";
    			this->Controls->Add(monLabel);
    Et le tour est joué

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 99
    Points : 76
    Points
    76
    Par défaut
    Bonjour,

    J'ai des problème avec les déclaration suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    List<String ^> ^listString = gcnew List<String ^>();
    StringBuilder ^sb = gcnew StringBuilder();
    List et StringBuilder = identificateur non déclaré (à la compilation).

    MERCI

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    et bien il faut déclarer le namespace ...

    List, c'est une collection générique, donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    using namespace System::Collections::Generic;
    StringBuilder, ca fait partie du System::Text, donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    using namespace System::Text;
    Pour ce genre de choses, il ne faut pas hésiter à consulter la msdn

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 99
    Points : 76
    Points
    76
    Par défaut
    Bonjour,

    Les fameux :
    ça ne s'invente pas.
    Mais la prochaine fois ou j'aurais des problèmes de déclaration, je m'en rapellerais.

    MERCI ENCORE, ça fonctionne superbe.

    Avis personnel :
    Je vais pouvoir adapter du text en couleur dans mes programmes, c'est des fois plus agréable.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [HTML]Peut-on écrire un texte sur une image ?
    Par flogreg dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 28/02/2005, 17h24
  2. [VB.NET] comment écrire du texte avec opengl?
    Par ero_senin dans le forum OpenGL
    Réponses: 2
    Dernier message: 17/01/2005, 13h34
  3. [glut] écrire du texte
    Par khayyam90 dans le forum OpenGL
    Réponses: 7
    Dernier message: 19/07/2004, 14h02
  4. Ecrire du texte en couleurs dans un composant
    Par wutang dans le forum Composants
    Réponses: 11
    Dernier message: 12/07/2004, 10h55
  5. Afficher du texte en couleur sous Borland C++ 4.02
    Par Cthulhu 22 dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 18/11/2003, 00h53

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