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++Builder Discussion :

TImage scrollbar onchange() [Débutant]


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 132
    Par défaut TImage scrollbar onchange()
    Bonjour,

    Je veux coder le fait de bouger un scrollbar , ça affiche la partie qui n'est pas visible. Le code est dans la partie OnChange() du scrollbar horizontal.

    Pourriez-vous m'aider s'il vous plaît?

    Merci!

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 12
    Par défaut
    Bonjour,

    Il serait plus facile d'utiliser un TSrollBox qui serait le parent du TImage.

    Il suffit de régler la taille virtuelle du TSrollBox aux dimensions du TImage dans le constructeur par exemple et tout sera gérer automatiquement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    __fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
    {
        ScrollBox1->HorzScrollBar->Range = Image1->Picture->Width;
        ScrollBox1->VertScrollBar->Range = Image1->Picture->Height;
    }
    D'autres propriétés peuvent être réglées dans HorzScrollBar et VertScrollBar

  3. #3
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 132
    Par défaut
    Merci!

    En fait, j'utilise un TScrollBar qui n'a pas de propriété Range.

    Pourriez-vous m'aider ?


  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 12
    Par défaut
    Bonjour,

    Pour faire la même chose à la main avec des TScrollBar

    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
     
    __fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
    {
        DoubleBuffered = true;
     
        Bitmap = new Graphics::TBitmap;
        Bitmap->LoadFromFile("image.bmp");
        Image2->Picture->Bitmap->Assign(Bitmap);
     
        HorzScrollBar->Max = Image2->Picture->Width - 1 - Image2->Width;
        VertScrollBar->Max = Image2->Picture->Height - 1 - Image2->Height;
    }
    //---------------------------------------------------------------------------
    __fastcall TForm1::~TForm1()
    {
        delete Bitmap;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::ScrollBarChange(TObject *Sender)
    {
     
        TRect RectDest, RectSource;
     
        RectDest = Rect(0, 0, Image2->Width, Image2->Height);
        RectSource = Rect(HorzScrollBar->Position, VertScrollBar->Position, HorzScrollBar->Position + Image2->Width, VertScrollBar->Position + Image2->Height);
        Image2->Canvas->CopyRect(RectDest, Bitmap->Canvas, RectSource);
    }

  5. #5
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 132
    Par défaut
    Merci!

    En parallèle, j'essaie de travailler sur la première solution mais le scrolbox cache l'image même si on la rattache au scrollbox:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Image1->parent=this->ScrollBox1;
    Pourriez-vous m'aider à afficher l'image?

    Merci!

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 12
    Par défaut
    Dans l'Inspecteur d'objet, glisser Image1 dans SrollBox1

    Ou écrire Image1->Parent = ScrollBox1 dans le constructeur par exemple

    On peut mettre aussi la propriété Align de Image1 à alClient

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

Discussions similaires

  1. TImage qu'avec scrollbar vertical
    Par exyacc dans le forum Composants VCL
    Réponses: 3
    Dernier message: 29/12/2016, 14h26
  2. [Langage/Algorithme] un code pour deplacer un TImage et positionner les ScrollBars simultanement
    Par blondelle dans le forum C++Builder
    Réponses: 0
    Dernier message: 26/06/2013, 14h40
  3. Timage et Canvas??
    Par vanack dans le forum C++Builder
    Réponses: 4
    Dernier message: 14/04/2007, 11h38
  4. [TImage] Transfert de Picture par pixels.
    Par H2D dans le forum Langage
    Réponses: 9
    Dernier message: 25/10/2003, 14h37
  5. TImage
    Par Thylia dans le forum C++Builder
    Réponses: 5
    Dernier message: 09/07/2002, 20h03

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