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 :

Texte saisi à l'exécution et placé sur un PictureBox.


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 46
    Points : 38
    Points
    38
    Par défaut Texte saisi à l'exécution et placé sur un PictureBox.
    Bonjour,
    Je suis en train de faire une petite application de dessin (genre PAINT de Windows.). Je bute sur le texte. Existerait-il un outil text qu'on peut placer sur un pictureBox?
    J'ai pensé créer un Dialog pour récupérer le texte de l'utilisateur et utiliser ensuite drawstring mais cette solution ne convient pas.
    Merci de votre aide.

  2. #2
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Points : 14 357
    Points
    14 357
    Par défaut
    Tout simplement un textbox.

    A l'endroit où l'utilisateur clique sur le picturebox, tu crées dynaminquement un textbox (WordWrap= true et Multiline à true) que tu positionnes à l'endroit où l'utilisateur a cliqué.

    Par contre, il faudra apporter quelques améliorations au textbox comme par exemple, donner la posbilité à l'utilisateur de le redimmensionner.
    Jérôme Lambert
    Développeur, Architecte, Rédacteur & Fan technologies Microsoft
    Ma boite informatique | Mon profil LinkedIn

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 46
    Points : 38
    Points
    38
    Par défaut
    Merci pour votre réponse. J'ai essayé le textbox apparait avec la chaine par défaut,mais il n'est pas éditable! Comment le rendre éditable?

  4. #4
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Points : 14 357
    Points
    14 357
    Par défaut
    Par défaut, il est éditable... Tu as fait quelque chose de spécial lorsque tu l'as ajouté dynamiquement ? Sinon vérifie que ReadOnly est à false et Enabled à true.
    Jérôme Lambert
    Développeur, Architecte, Rédacteur & Fan technologies Microsoft
    Ma boite informatique | Mon profil LinkedIn

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 46
    Points : 38
    Points
    38
    Par défaut
    Ok. Je pense que j'ai un problème de gestion des évènements. Je m'explique : J'ai un bouton qui me permet de choisir l'option "texte" qui ajoute un texte dans un endroit donné du pictureBox.
    Lorsqu'on clique sur ce bouton et sur le pictureBox, ce code est exécuté
    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
    39
    40
    41
    if(imModeDessin == 4)
    			{
     
     
     
    					if ( e.Button == MouseButtons.Left )
    					{
    						Graphics g = Graphics.FromImage( imBitmap );
    						g.SmoothingMode = SmoothingMode.AntiAlias;
    						Pen pen = new Pen(imPenColor,1); 
     
    						AutoScaleBaseSize = new System.Drawing.Size(5, 13);
    						ClientSize = new System.Drawing.Size(292, 266);
     
    						TextBox tb = new TextBox();
    						// textBox1
    						// 
    						tb.Location = new System.Drawing.Point(e.X, e.Y);
    						tb.Name = "textBox1";
    						tb.TabIndex = 1;
    						tb.Text = "textBox1";
    						tb.ReadOnly = false;
    						tb.Enabled = true;
    						// 
    						// VueTest
    						// 
    						AutoScaleBaseSize = new System.Drawing.Size(5, 13);
    						ClientSize = new System.Drawing.Size(292, 266);
    						Controls.Add(tb);
    						SolidBrush drawBrush = new SolidBrush(Color.Black);
    						g.DrawString(tb.Text,new Font("Arial",15),drawBrush,new Rectangle(imStartPoint.X, imStartPoint.Y,e.X, e.Y));
     
    						//imGraphics.DrawLine(pen,imStartPoint,new Point(e.X,e.Y));
    						imImagePictureBox.Image = imBitmap;
     
     
     
     
     
    				}
    			}
    Ce qui fait que à chaque fois que je clique sur le pictureBox et que le mode texte est activé, y a que des textes qui sont dessinés. M'enpêchant ainsi de modifier le texte. Faudrait-il implémenter un autre évènement pour gérer l'édition?Le double-click par exemple?
    Merci d'avance.

  6. #6
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Points : 14 357
    Points
    14 357
    Par défaut
    Le textbox ne doit pas rester tout le temps.

    En fait, imagine le cas suivant :
    • L'utilisateur clique sur le bouton "Ecrire", son curseur change.
    • Lorsqu'il clique avec le bouton gauche sur le picturebox, un textbox est ajouté dynamiquement avec le focus.
    • L'utilisateur écrit ce qu'il veut.
    • Lorsque le textbox perd le focus, tu le caches, tu récupères le texte saisi via la propriété Text du textbox et tu fais un DrawString à l'endroit initialement prévu.
    Alors que dans ton code, si j'ai bien compris, tu crées le textbox et tu fais un drawstring directement sans avoir laissé le temps à l'utilisateur d'éditer son texte, ni même d'avoir caché le textbox.
    Jérôme Lambert
    Développeur, Architecte, Rédacteur & Fan technologies Microsoft
    Ma boite informatique | Mon profil LinkedIn

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 46
    Points : 38
    Points
    38
    Par défaut
    J'ai essayé d'abord de commenter la partie qui dessine et je ne vois même pas le textBox. C'est quoi la propriété z-order pour les controles c#?

  8. #8
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Points : 14 357
    Points
    14 357
    Par défaut
    C'est normal que tu ne vois pas ton texbox, tu as utilisé la collection Controls de la Form. Ce qui signifie que le contrôle est sûrement placé derrière ton PictureBox.

    Tu dois donc utilisé la collection Controls de ton PictureBox pour ajouter le textbox correctement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imImagePictureBox.Controls.Add(tb);
    Jérôme Lambert
    Développeur, Architecte, Rédacteur & Fan technologies Microsoft
    Ma boite informatique | Mon profil LinkedIn

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 46
    Points : 38
    Points
    38
    Par défaut
    Merci Cardi. ça marche.

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

Discussions similaires

  1. [XL-2010] Exécuter une requête sur un fichier excel placé dans une GED sharepoint
    Par fanny35000 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 24/04/2015, 10h40
  2. exécution de fonction sur modification de champ texte
    Par Elianora la blanche dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 03/06/2009, 17h33
  3. Texte placé sur une DataGridViewLinkColumn
    Par boby62423 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 14/04/2009, 10h04
  4. Réponses: 4
    Dernier message: 21/07/2004, 10h51

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