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++/CLI Discussion :

C++/CLI : problème avec graphique


Sujet :

C++/CLI

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Points : 103
    Points
    103
    Par défaut C++/CLI : problème avec graphique
    Bonjour à tous,

    Je reprends un de mes vieux programmes qui fonctionne parfaitement comme base pour refaire un nouveau programme et là cela ne fonctionne pas dès le début..

    Je me demande donc ce que j'oublie

    Pour faire simple j'ai écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Graphics ^ graph = this->CreateGraphics();
    graph->Clear (System::Drawing::Color::Navy); // clear and fill with Navy blue
    Le programme se compile sans message d'erreur.

    Mais quand je le lance, la forme reste grise et ne se colore pas en bleu Navy comme escompté

    J'ai rajouté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Rectangle drawingRect (80,70,190,190);
    SolidBrush ^brush = gcnew SolidBrush (System::Drawing::Color::White);
    graph->FillEllipse (brush, drawingRect);
    Aucune erreur de compilation mais là encore pas d'ellipse

    Je pense oublier un détail dont je ne me souviens plus ... Mais lequel ???

    Merci à ceux qui pourront m'aider à débloquer cette situation.

    Bonne soirée

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Où fais-tu ça? Dans ton OnPaint? (ou équivalent, je ne me souviens plus du nom de l'événement en WinForms)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Points : 103
    Points
    103
    Par défaut
    Bonjour,

    Je fais ça directement dans Form1_Load ...

    J'ai plusieurs programmes que j'ai écrits en 2010 et qui font ça et ça marche nickel ...

    J'essaie de refaire la même chose et ça ne fonctionne pas.

    J'ai beau comparer les propriétés des Form, je ne vois rien pour expliquer ça ..

    Le pire, c'est que si je fais carrément un copier-coller de mon ancien programme dans une nouvelle forme, ça passe sans problème à la compilation, mais rien à l'exécution

    C'est donc une petite connerie que j'oublie de déclarer quelque part, mais quoi?


    Bonne journée

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Normalement, le dessin, on évite de le faire à d'autre moments que l'événement Paint.
    Le PaintEventArgs contient l'objet Graphics à utiliser pour peindre.

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 171
    Points : 12 293
    Points
    12 293
    Par défaut
    Je dis peut-être une connerie, mais c'est pas une histoire de Thème ?

    Dans vos vieux projets, vous n'aviez peut-être pas fait en sorte que votre application soit Thème-Aware.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Points : 103
    Points
    103
    Par défaut
    Merci à vous !!

    Je suis un peu paumé ...

    Mes vieux programmes (sauf un!) ne contiennent aucun évènement Paint et pourtant ils fonctionnent même aujourd'hui et même après conversion de Visual 2008 à Visual 2010 et recompilation.

    Of course je suis un crétin, si j'avais découvert l'existence de l'évènement Paint, j'aurais pu éviter de mettre un timer qui redessine périodiquement l'image dans la Form

    Quant aux thèmes (Thème-Aware) je n'ai aucune idée de ce que c'est et aucun souvenir d'avoir fait quelque chose de ce genre à la création des projets.

    Donc j'ai réussi à faire marcher les quelques lignes que j'ai écrites dans mon premier post en modifiant de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) 
    {
    }
    private: System::Void Form1_Paint(System::Object^  sender, System::Windows::Forms::PaintEventArgs^  e) 
    {
       Graphics^ graph = e->Graphics;
       graph->Clear (System::Drawing::Color::Navy); // clear and fill with Navy blue
       Rectangle drawingRect (80,70,190,190);
       SolidBrush ^brush = gcnew SolidBrush (System::Drawing::Color::White);
       graph->FillEllipse (brush, drawingRect);
    }
    Mais je ne comprends pas pourquoi je n'ai pas eu ce problème lors de l'écriture de mes anciens programmes et pourquoi ceux ci fonctionnent toujours malgré l'absence de l'évènement Paint

    J'aimerais bien résoudre ce petit mystère...

    Mais à l'avenir j'utiliserai Paint ...

    Merci encore


    Bonne journée et merci ..

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 171
    Points : 12 293
    Points
    12 293
    Par défaut
    Ce que vous indiquez est cohérent avec mon hypothèse.
    Le fait de gérer les thèmes, la DPI indépendance, la version des contrôles commun... sont liée à la configuration du projet et généralement fixé à sa création (et les modifier, c'est généralement bien planqué).
    La conversion des projets d'une version de VS à une autre ne change pas ces "choix" fait par "défaut" à la création du projet.
    Ces choix par défaut sont différents d'une version à une autre de VS.

    Donc, comme vous faites des trucs pas très clean, comme faire de l'affichage ailleurs que dans l'event Paint, les réglages par défaut originaux (les vieux projets) sont "compatible" avec vos bidouilles mais pas avec les nouveau réglages par défaut, qui sont généralement meilleurs que les anciens mais qui pardonnent moins les bidouilles.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Points : 103
    Points
    103
    Par défaut
    Citation Envoyé par bacelar Voir le message
    Donc, comme vous faites des trucs pas très clean, comme faire de l'affichage ailleurs que dans l'event Paint, les réglages par défaut originaux (les vieux projets) sont "compatible" avec vos bidouilles mais pas avec les nouveau réglages par défaut, qui sont généralement meilleurs que les anciens mais qui pardonnent moins les bidouilles.
    Bonsoir et merci ...

    C'est vrai que je ne fais pas toujours des choses très cleans .. Il y a tellement de choses dans Visual qu'il est difficile de tout connaitre mais grâce à des gens comme vous et Médinoc j'apprends et je vous en remercie ..

    Le problème est résolu et maintenant je sais à quoi sert l'event Paint

    Bonne soirée

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

Discussions similaires

  1. [XL-2010] Problème avec graphique et affichage en abscisse
    Par Galgante dans le forum Excel
    Réponses: 4
    Dernier message: 15/09/2012, 13h52
  2. Problème avec graphique
    Par Mario Rousson dans le forum VB.NET
    Réponses: 1
    Dernier message: 10/09/2011, 03h12
  3. [C++/CLI] Problème avec des String^
    Par Kansuu dans le forum Windows
    Réponses: 1
    Dernier message: 02/08/2007, 09h25
  4. [C++/CLI] problème avec Timer ou delegate
    Par breezer911 dans le forum Visual C++
    Réponses: 1
    Dernier message: 11/04/2007, 15h27
  5. problème avec graphique dans état access
    Par petitmic dans le forum Access
    Réponses: 5
    Dernier message: 07/09/2005, 14h55

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