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 :

Ajouter un evenement a un bitmap dynamique


Sujet :

C#

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Par défaut Ajouter un evenement a un bitmap dynamique
    Bonjour,

    j'aimerais ajouter un evenement mouseHover sur un bitmap creer dynamiquement mais je ne sais pas si c'est possible

    le code ci-dessus m'affiche dans une fom des images representant des emoticons, ce code fonctionne parfaitement.

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
     private void FEmo_Paint(object sender, PaintEventArgs e)
            {
                Stream imgStream = null;
                int ImageLeft = 10;
                int ImageTop = 10;
                int ImageHeight = 21;
                int ImageWidth = 21;
                Graphics g = e.Graphics;
                Assembly a = Assembly.GetExecutingAssembly();
     
     
                for (int i = 0; i < MAX_EMOTICON_SEQUENCE; i++)
                {
                    imgStream = a.GetManifestResourceStream("monprog.Resources.icon" + System.Convert.ToInt16(i).ToString() + ".gif");
                    if (!(null == imgStream))
                    {
                        try
                        {
                            RectangleF srcRect = new RectangleF(ImageLeft, ImageTop, ImageWidth, ImageHeight);
                            Bitmap bmp = new Bitmap(Image.FromStream(imgStream));
                            bmp.Tag = (int)i;
                            aLstEmo.Add(tabEmo[index]);
                            //g.DrawImage(Image.FromStream(imgStream), srcRect);
                            g.DrawImage(bmp, srcRect);
     
                            bmp = null;
                            if (((i % 30) == 0) && (i > 0))
                            {
                                ImageTop = 10 + ImageTop + ImageHeight;
                                ImageLeft = 10;
                            }
                            else
                                ImageLeft = 10 + ImageLeft + ImageWidth;
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message.ToString());
                        }
     
                        try
                        {
                            imgStream.Close();
                            imgStream = null;
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message.ToString());
                        }
                    }
     
                }
            }
    mais je ne sais pas comment proceder pour ajouter l'evennement.
    je pensais mettre du code sur l'evenement mouseHover de la fom et testé les coordonnees de la souris (ligne et colonne) en pixel, mais comment connaitre ces coordonnees.

    et apparemment ajouter un evennement dans un bitmap dynamique ce n'est pas possible.

    Merci de votre aide.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut
    Il suffit que tu t'attaches a un control

    je suppose que c'est "g" en l'occurence

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void RegisterControl(Control cont)
            {
                cont.MouseEnter += new EventHandler(...);
                cont.MouseLeave += new EventHandler(...);
            }
    Non ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Par défaut
    je vais teste cette astuce, merci.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Par défaut
    Apparement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RegisterControl((Control)bmp);
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RegisterControl((Control)g);
    ne fonctionne pas

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Par défaut
    du coup j'ai utilisé un arraylist sur lequel je stocke une class avec tous les element qui m'interesse puis dans l'evenement click avec les coordonnee de la souris sur la form je recupere l'objet du tableau stocker.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut
    ne devrais tu pas utiliser une picture box ?

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/11/2006, 18h59
  2. Comment ajouter des evenements a un activex en VB6
    Par steine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 12/10/2006, 13h29
  3. Réponses: 2
    Dernier message: 02/08/2006, 23h54
  4. [GDI] Générer un bitmap dynamiquement
    Par Copros dans le forum Windows
    Réponses: 2
    Dernier message: 12/06/2006, 11h10
  5. Réponses: 6
    Dernier message: 18/04/2005, 21h12

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