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 :

Je recherche un composant graphique très spécial


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 76
    Points : 31
    Points
    31
    Par défaut Je recherche un composant graphique très spécial
    Bonjour à tous,

    je développe actuellement une application Winforms 2.0 et je cherche un composant graphique permettant de dessiner des rayons de magasin, y introduire un certain nombre de planches et sur ces planches y déposer des photos. Les photos doivent pouvoir être bougées d'une planche à une autre, ou d'un rayon à un autre.

    Quelqu'un a-t-il une idée de comment faire cela ?

    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    tout d'abord, il serait interessant de savoir si tu veux travailler en 2D ou en 3D
    (on peut evidemment faire de la 3D sans passer par un moteur 3D (genre 2D isométric par exemple )...

    Apres, il faudrait savoir exactement ce que tu veux faire d'un point de vue
    ergonomie... car pour moi, dessiner des planches, ca reste "vague"...

    Peut-etre qu'un screenshot d'un montage image illustrant le resultat que
    tu souhaites obtenir pourrait faire l'affaire ?

    Apres, d'un point de vue fonctionnel, le composant est assez simple.. (gestion de rayons et de planches avec affectations des photos aux uns et aux autres
    Seul l'aspect "visuel" peut poser quelques soucis de developpement

    The Monz, TOulouse

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 76
    Points : 31
    Points
    31
    Par défaut
    C'est de la 2D, c'est un truc tout simple qui pourrait représenter un rayon de magasin avec plusieurs étagères qui ont plusieurs planchent sur lesquelles on peut déposer des photos. Ca ne doit pas être un truc complexe, et je n'ai malheureusement pas de représentation pour vous

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    ok.. et par rapport aux "design" des tes rayons, tu veux partir sur un système
    ou tu construits toi meme tes rayons ou cela peut etre défini ?

    On pourrait partir sur une idée simple :

    Une étage peut etre considerée comme un container, genre Panel ou autre,
    bref, c'est un control dans lequel on pourrait mettre d'autres controles (ca
    s'est pour l'aspect visuel...) et par exemple, si tu cherches sur
    www.codeproject.com , il y a des exemples de projets qui permettent de
    définir en live une IHM (un peu comme si tu etais dans Visual Studio) mais
    cela dans ton programme...

    donc, si tu peux fournir les quelques composants ( genre , les etages et les rayons que tu te crées toi meme) et ensuite, tu peux ajouter des picturesbox
    que tu déplaceras au fur et à mesure ... donc, si tu geres cela (et c'est pas
    tres compliqué) tu pourras obtenir quelque chose proche de ton résultat

    Apres, reste à savoir de combien de temps, de budget du dispose pour faire
    cela ? (il est plus rentable parfois de faire faire que de faire soit meme (surtout si (c qui m'a l'air d'etre le cas) c'est pour une entreprise

    A+

    The Monz, Toulouse

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 76
    Points : 31
    Points
    31
    Par défaut
    En fait je suis dans une société de développement et c'est une demande d'un client.
    On m'a demandé de rechercher le moyen de faire cela, mais pas vraiment de le mettre en oeuvre moi même, enfin, je dois tester pour montrer que c'est possible.

    En tous cas, déjà un grand merci pour ton aide

  6. #6
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    une base pourrait etre la suivante :

    Tu crées un controle etage héritant du panel et tu fais un truc dans ce genre :
    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
     
    public partial class MyEtagere : Panel
        {
            public MyEtagere()
            {
                InitializeComponent();            
            }
     
            protected override void OnControlAdded(ControlEventArgs e)
            {
                base.OnControlAdded(e);
                e.Control.Location = new Point(0, Height - Height / 5);
                Invalidate();
            }
     
            protected override void OnPaint(PaintEventArgs e)
            {
                base.OnPaint(e);
                Graphics g = e.Graphics;
                g.FillRectangle(new SolidBrush(Color.Red), new Rectangle(0, Height - Height/5, Width, Height / 5));
            }
        }
    Apres, regarde du coté de code permettant de créer des designers... car
    apres, il "suffirait" de faire tes propres composants

    Voir un truc tout simple comme ca (toujours héritage panel)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    protected override void OnControlAdded(ControlEventArgs e)
            {
                base.OnControlAdded(e);
                e.Control.Dock = DockStyle.Down;            
            }
    Come ca, tout controle ajouter dans ton "étage" sera mis le plus en bas possible"


    The Monz, Toulouse

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 76
    Points : 31
    Points
    31
    Par défaut
    OK je vais déjà tester ca, je vous tiens au courant.
    Et pour pouvoir déplacer une photo dans ma fenêtre windows, c'est possible ?

  8. #8
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    beh, supposons que ton composant Etage soit un panel... si tu ajoutes
    une picturebox dedans , tu pourras la déplacer comme n'importe qu'elle autre composant...

    En fait, c'est à toi de définir ensuite les "lois" de positionnemnet des objets
    entre les différents composants que tu as besoin de créer

    Donc, tu peux tres bien définir un comportement pour tes composants graphiques avec une gestion quand tu ajoutes un composant dans ton panel ou en retire un pour qu'il y ait une remise en place des éléments apres ajouts ou suppression.. un peu à la mode d'un FlowLayoutPanel

    Si tu vois ce que je veux dire ?

    The Monz, TOulouse

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 76
    Points : 31
    Points
    31
    Par défaut
    J'ai créé un panel dans lequel j'ai mis un picturebox mais je n'arrive pas à déplacer la photo.
    Y-a-t-il une option spécifique ?

  10. #10
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    Non, c'est normal que tu ne puisses pas déplacer la pictureBox...

    Il faut que tu fasses un peu plus de code pour cela....

    Il faut en effet que tu ajoutes du code pour déplacer ta photo...

    Ci joint, un exemple plus parlant qu'un long discours ...
    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
     
    private void button1_MouseDown(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {
                    x = e.X;
                    y = e.Y;
                }
            }
     
            private void button1_MouseMove(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {
                    button1.Left += e.X - x;
                    button1.Top += e.Y - y;
                }
     
            }
    Dans cet exemple, j'ai "juste" mis un button1 dans ma form

    The Monz, Toulouse

  11. #11
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    Le mieux étant de te faire ta Propre classe controle PictureBOx, genre
    comme ca

    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
     
    public partial class MovingPictureBox : PictureBox
        {
            private int x, y;
            public MovingPictureBox()
            {
                InitializeComponent();
                MouseDown += new MouseEventHandler(MovingPictureBox_MouseDown);
                MouseMove += new MouseEventHandler(MovingPictureBox_MouseMove);
            }
     
            void MovingPictureBox_MouseMove(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {
                    Left += e.X - x;
                    Top += e.Y - y;
                }
            }
     
            void MovingPictureBox_MouseDown(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {
                    x = e.X;
                    y = e.Y;
                }
            }
        }
    Donc, apres, une fois que tu as ajouté ton composant MovingPictureBox à ta form, tu pourras la déplacer à l'exécution...

    Ca t'aide ?

    The Monz, Toulouse

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 76
    Points : 31
    Points
    31
    Par défaut
    Pour bouger les photos, j'ai mis une picturebox dans un panel comme tu me l'as conseillé et j'y ai lié l'evènement mousemove:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {
                    pictureBox1.Location = this.PointToClient(new Point(Cursor.Position.X, Cursor.Position.Y)); 
                }
            }
    Je n'ai plus qu'à trouver un élément graphique qui ressemblerait à une étagère avec un nombre de planches pouvant être défini.

    Merci

  13. #13
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    Beh sinon, il te suffit de developper ce genre de composant

    Tu pourrais par exemple, dire qu'un rayon est un panel.. qu'une étage
    est aussi un panel et ensuite géré le Drag And drop entre panel/Etagere
    dans ton application

    Ca pourrait etre une piste simple, efficace et correspondant à ton besoin

    The Monz, Toulouse

  14. #14
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    D'ailleurs à titre indicatif, c'est quoi la différence entre une étagère et une planche ?

    The Monz, Toulouse

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 76
    Points : 31
    Points
    31
    Par défaut
    En fait, il n'y a pas de différence lol
    C'est moi qui m'exprime mal je pense.
    On a un ensemble de plusieurs rayons qui peuvent avoir plusieurs étagères.

    Pour l'instant, je cherche le moyen d'ajouter dynamiquement des picturebox en cliquant sur un bouton et en assignant l'évenement mousemove.
    J'arrive à ajouter un nouveau picturebox dans mon panel mais je ne sais pas comment créer un nouvel evènement mousemove dynamiquement

  16. #16
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    Utilises ma classe MovingPictureBox... comme ca , tu pourras ajouter
    autant de pictureBox que tu veux sans avoir à te casser pour l'aspect déplacement

    The Monz, Toulouse

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 76
    Points : 31
    Points
    31
    Par défaut
    Je ne vois pas trop comment faire avec ta MovingPictureBox.
    C'est juste une classe ou c'est une windows form ? Parce que j'ai des erreurs dans les deux cas ...

  18. #18
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    Essaye cet exemple

    et dis moi si cela te convient...

    Si c'est le cas, t'as tout de fait gratos

    The Monz, Toulouse

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 76
    Points : 31
    Points
    31
    Par défaut
    Pas mal pas mal, je vais reprendre quelques idées.
    Le truc c'est que je dois pouvoir définir quelque part le nombre d'étagères, la taille d'un rayon, ajouter des photos, ...
    C'est assez spécial mais bon je vais suivre ton idée je pense.
    Merci beaucoup

  20. #20
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    Beh, dans mon exemple, j'ai juste crée deux etageres

    Maintenant, tu pourrais "encapsuler" ces etageres dans un UserControl de type Rayon... et donc, mettre une propriété NbEtagere.. pour construire à la volée
    ton nombre d'étagere...

    Pour la taille d'un rayon, la encore, propriété...

    Et pour l'ajout des photos, beh, ma classe MovingPictureBox est une pictureBox donc, tu peux tout à fait faire des trucs du genre :

    MovingPictureBox1.Image = Image.FromFile(CheminDeTonImage);

    Apres, je sais pas si tu as vu, mais le DragAndDrop marche entre 2 etageres mais aussi au sein de la meme etagere (à chaque fois, l'element droppé vient en prmier à gauche

    The Monz, Toulouse

    PS : Si tu galères vraiment trop... j'peux toujours t'aider

Discussions similaires

  1. [swing] Recherche d'un composant graphique
    Par isoman dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 07/04/2009, 22h39
  2. Recherche d'un composant graphique
    Par soad dans le forum Windows Forms
    Réponses: 1
    Dernier message: 02/12/2008, 22h24
  3. Recherche un composant graphique bien particulier
    Par troubleshooting dans le forum Windows Forms
    Réponses: 11
    Dernier message: 03/04/2008, 17h06
  4. Recherche de composants graphiques
    Par Flow_75 dans le forum C++Builder
    Réponses: 4
    Dernier message: 17/03/2007, 10h23
  5. Réponses: 8
    Dernier message: 24/08/2006, 21h20

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