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

zone de dessin temporaire


Sujet :

Windows

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 117
    Points : 35
    Points
    35
    Par défaut zone de dessin temporaire
    bonjour à tous,

    voila je voudrais créer une barre de progression moi même et pour l'affichage j'ai besoin d'une zone de dessin temporaire dans laquelle je pourrais faire quelques opérations (il faudrait que je dessine dedans un rectangle arrondi avec RoundRect et que j'inverse tous les pixels)
    Pour cela j'ai essayer de créer un DC dans lequel je selectionne un bitmap mais sa ne marche pas ... je comprend pas là ....
    Pour le bitmap j'ai essayer 2 méthodes, CreateCompatibleBitmap et CreateDIBSection, mais rien à faire ...

    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
    HDC memDC = CreateCompatibleDC(hDC);
    if (memDC!=NULL)
    {
    //	HBITMAP hbmp = CreateCompatibleBitmap(hDC,GetDeviceCaps(hDC,HORZRES),GetDeviceCaps(hDC,VERTRES));
        BITMAPINFO bi = { 
            { sizeof(bi.bmiHeader),largeur,hauteur,1,32,BI_RGB,0,0,0,0,0 },
            {{0,0,0,0}}
        };
        LPVOID pt_bits = NULL;
        HBITMAP hbmp = CreateDIBSection(NULL,&bi,DIB_RGB_COLORS,&pt_bits,NULL,0);
        
        if (hbmp!=NULL)
        {
            if (SelectObject (memDC,hbmp)!=NULL)
            {
                DessinerRectangleArrondi ((HDC)hbmp,
                                          0,0, largeur,hauteur,
                                          CreatePen(PS_SOLID,0,RGB(0,0,0)),CreateSolidBrush(RGB(0,0,0)),
                                          20,20);
    
                BitBlt (hDC,position.x,position.y,largeur,hauteur, (HDC)hbmp,0,0, SRCPAINT);
    
                DeleteObject (hbmp);
                DeleteDC (memDC);
            }
            else
                MessageBox(NULL,TEXT("impossible de selectionner le bitmap"),TEXT("erreur"),MB_OK);
        }
        else
            MessageBox(NULL,TEXT("impossible de créer le bitmap"),TEXT("erreur"),MB_OK);		}
    else
        MessageBox(NULL,TEXT("impossible de créer le memDC"),TEXT("erreur"),MB_OK);
    voila si qq1 sait comment faire ...

    merci d'avance
    @+

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    1. Quand tu dis
      Citation Envoyé par Mat 74
      sa ne marche pas
      Tu pourrais préciser ?
      Quelle erreur as-tu ?
    2. Pas tellement besoin en fait, il suffit de regarder le code pour voir que tu fais deux fois la même c***erie:Et memDC, il sert à quoi d'après toi ?

    PS: T'as une accolade qui se balade en bout de ligne derrière la MessageBox, pas bien...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 117
    Points : 35
    Points
    35
    Par défaut
    euh en fait sa ( (HDC)hbmp ) c'est un test que j'ai fais parce que sa ne marchais pas avec le memDC et j'ai oublier de remettre comme c'était à la base.

    Pour ce qui est de l'erreur, en fait il fait comme si rien n'était dessiné dans le memDC. En fait que je fasse tout le truc avec le memDC ou pas sa ne change rien à l'affichage au final.

    ( pour ce qui est de l'accolade, t'inquiète, à la base elle n'était pas là, erreur de copier coller, faut pas déconner avec l'indentation !! )

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Pour commencer, essaie avec SRCCOPY au lieu de SRCPAINT.
    Tu peux aussi tenter de tester si la première opération de dessin a marché en déselectionnant le bitmap compatible et en l'insérant dans un contrôle Static...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 117
    Points : 35
    Points
    35
    Par défaut
    pour ce qui est du SRCPAINT je pense que sa marche parce que quand je dessine le rectangle arrondi sur le hDC également (au lieu du memDC) tout marche nickel, enfin à part que je vois le rectangle arrondi à l'écran

    sinon qu'es-ce que tu entend part déselectionner un bitmap

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Le retirer du DC avec SelectObject() pour le mettre dans autre chose (par exemple, un contrôle static).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 117
    Points : 35
    Points
    35
    Par défaut
    auh j'arrive pas à afficher le bitmap dans un static

    le pb vient peut etre du fait que RoundRect ne peut pas dessiner dans un memDC ou quelque chose dans le style

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Si si, RoundRect() peut parfaitement dessiner dans tout DC...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 117
    Points : 35
    Points
    35
    Par défaut
    ah ben alors je vois pas pourquoi ...

Discussions similaires

  1. les figures dans zone de dessins ont disparus
    Par betty2007 dans le forum Word
    Réponses: 0
    Dernier message: 09/03/2008, 12h56
  2. zone de dessin (drawingarea)
    Par chokrijer dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 24/04/2007, 20h41
  3. Problème d'affichage dans une zone de "dessin"
    Par jason69 dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 28/08/2006, 16h12
  4. [débutant] Une zone de dessin et des boutons
    Par mavina dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 17/02/2006, 12h51
  5. [MFC] zone de dessin
    Par meli0207 dans le forum MFC
    Réponses: 3
    Dernier message: 04/07/2005, 16h12

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