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

Windows Forms Discussion :

Déplacement d'image dans un scrollable panel


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 60
    Points : 55
    Points
    55
    Par défaut Déplacement d'image dans un scrollable panel
    Bonjour !

    Je fais appel à vos lumières pour un drôle de problème:
    je suis en train de faire un mini éditeur d'image pour une appli métier. j'affiche une image haute résolution dans un panel donc autoscroll est à true.
    Je peux défiler mon image grâce au scrollbars. bon... comme je veux aussi le faire avec ma souris (comme un drag), j'ai implémenté l'évenement OnMouseMove comme ça:

    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
    private void pBox_MouseMove(object sender, MouseEventArgs e)
            {
                bool Moving = false;
                if ((Control.ModifierKeys & Keys.Control) == Keys.Control)
                {
                    Cursor = Cursors.SizeAll;
                    Moving = true;
                }
                else
                {
                    Cursor = Cursors.Default;
                    Moving = false;
                }
     
                Point ScreenPoint = Control.MousePosition;
                if (e.Button == MouseButtons.Left)
                {
                    if (Moving)
                    {
                        // delta X
                        int DeltaX = _PaintCoord.X - ScreenPoint.X;
                        if (DeltaX > 0)
                            HorizontalScroll.Value = Math.Min(HorizontalScroll.Maximum, HorizontalScroll.Value + DeltaX);
                        else
                            HorizontalScroll.Value = Math.Max(HorizontalScroll.Minimum, HorizontalScroll.Value + DeltaX);
                        // delta Y
                        int DeltaY = _PaintCoord.Y - ScreenPoint.Y;
                        if (DeltaY > 0)
                            VerticalScroll.Value = Math.Min(VerticalScroll.Maximum, VerticalScroll.Value + DeltaY);
                        else
                            VerticalScroll.Value = Math.Max(VerticalScroll.Minimum, VerticalScroll.Value + DeltaY);
                        Invalidate();
                    }
                }
                _PaintCoord = ScreenPoint; // _PaintCoord est membre de ma classe
            }
    ça marche relativement bien dans d'autres langage comme Dephi, mais là, lorsque je déplace, j'ai des mouvements désordonnés.
    on dirait que VerticalScroll.Value et HorizontalScroll.Value ne s'affectent pas immédiatement, en pas à pas, en tout cas, l'affectation ne passe pas toujours.
    bizarre?

    si quelqun connait une solution, je suis preneur.

    Merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 60
    Points : 55
    Points
    55
    Par défaut
    bon j'ai fini par trouver !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (Moving)
                    {
                        int DeltaX = _PaintCoord.X - ScreenPoint.X;
                        int DeltaY = _PaintCoord.Y - ScreenPoint.Y;
                        AutoScrollPosition = new Point(-AutoScrollPosition.X + DeltaX, -AutoScrollPosition.Y + DeltaY);
                    }
    Et voilà


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

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/04/2008, 22h04
  2. Déplacement d'images dans VB
    Par Dudule73 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 11/06/2007, 12h19
  3. [AWT] Image dans un Panel
    Par -Jolan- dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 29/12/2005, 15h57
  4. Image dans un Panel
    Par Pfeffer dans le forum Composants
    Réponses: 14
    Dernier message: 01/01/2005, 21h16
  5. [image] dans un panel
    Par phoebe dans le forum Composants
    Réponses: 4
    Dernier message: 13/07/2004, 10h44

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