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

wxWidgets Discussion :

Scale de l'image d'un wxStaticBitmap lors d'un redimensionnement du contrôle


Sujet :

wxWidgets

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 5
    Par défaut Scale de l'image d'un wxStaticBitmap lors d'un redimensionnement du contrôle
    Bonjour,

    J'ai tenté de mille et une manières (mais apparemment pas la bonne ...) de redimensionner l'image (type BMP) contenue dans un contrôle wxStaticBitmap.

    Description :

    1 - Lors de l'exécution de l'application et de l'instanciation de mon wxStaticBitmap, celui-ci fait, par exemple, 196x256 px. Je voudrais, alors, qu'à l'issue l'instanciation le bitmap que je souhaite y afficher, ses dimensions soient ajustées avec celles du container (IE. 196x256).

    2 - Lorsque l'utilisateur retaille la fenêtre - qui entraine un redimensionnement du wxStaticBitmap - je souhaiterais que les dimensions du BMP (déjà affiché) soient également ajustées aux dimensions de ce même container.

    A priori, rien de plus simple ; j'aurais dit "un Scale() dans une fonction évenementielle répondant à l'évènement wxEVENT_SIZE" ... Mais, non, rien n'y fait ... j'ai un magnifique plantage que je ne sais expliquer même en DEBUG).

    J'avoue ne pas m'en sortir ... et ça me torture

    Si quelqu'un a une méthode qui fonctionnait, je suis évidemment preneur.

    Merci par avance,

    leXof

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par défaut
    Le mieux serait de conserver l'image d'origine dans un membre de la classe puis :

    - soit dans un événement SIZE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetBitmap(m_image.Scale(event.GetSize().x, event.GetSize().y));
    - soit dans un événement PAINT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    wxPaintDC dc(this);
    wxSize csize(GetClientSize());
    dc.SetUserScale(csize.x/m_image.GetWidth(), csize.y/m_image.GetHeight());
    dc.DrawBitmap(m_image);

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 5
    Par défaut
    Bonjour et merci pour ta réponse.

    Ce sont deux choses que j'ai tentée, mais hélas, j'ai une belle fenêtre "Debugger Just-in-time" ...

    Lorsque je debug (j'utilise gdb avec codeblocks) :

    - sur l'évenènement Size : le dernier appel de la pile (celui qui est en cause donc) est le Scale de l'image

    - sur l'évènement Paint : il s'agit de l'init du DC de la wxStaticImage.

    A savoir que pour ces deux évènements j'ai utilisé ces deux instructions :

    Board->Connect(ID_BOARD,wxEVT_SIZE,(wxObjectEventFunction)&myFrame::OnBoardSize);
    Board->Connect(ID_BOARD,wxEVT_PAINT,(wxObjectEventFunction)&myFrame::OnBoardPaint);

    (Board étant la wxStaticImage en question)

    Une idée ?

    Merci,
    A++
    Christophe

  4. #4
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    L'autre solution serait de créer un composant spéciale dédié à cela, qui hérite de wxControl par exemple.

    Il ne faut que peindre une bitmap dans un DC, cela devrait y aller, tu perdras moins de temps à comprendre pourquoi StaticBitmap ne fonctionne pas, et tu pourras le customizer à volonté

Discussions similaires

  1. [CKEditor] probleme d'image; ajout de quot lors d'insertion d'image
    Par dedel53 dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 28/10/2007, 00h05
  2. Réponses: 2
    Dernier message: 03/07/2007, 23h48
  3. Image scintillante lors d'un redimensionnement
    Par QAYS dans le forum Delphi
    Réponses: 3
    Dernier message: 22/02/2007, 11h34
  4. [vb.net]inserer un logo ou une image dans l'entete lors de l'impression
    Par hanan_tsdi2_deMaroc dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/05/2006, 08h29
  5. Image s'affiche que lors du redimensionnement
    Par gmonta dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 17/05/2005, 13h28

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