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

MFC Discussion :

[MFC] Substitution de couleurs dans un BITMAP


Sujet :

MFC

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Par défaut [MFC] Substitution de couleurs dans un BITMAP
    Bonjour à tous,
    J'ai des images bitmap 2 couleurs: fond noir + dessin blanc à l'origine. Via des boutons radio, l'utilisateur pourra changer la couleur blanche d'origine et uniquement celle ci.

    Voici comment je dessine une image:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CBitmap *pOldBitmap
    CDC *pDC;
    pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
     
    m_cdcbitmap.CreateCompatibleDC(pDC);
     
    pOldBitmap = m_cdcbitmap.SelectObject(GetParent()->m_cbit);
     
    pDC->SetBkMode(TRANSPARENT);
    pDC->pDC->TransparentBlt(posx,posy,width,height,,&m_cdcbitmap,0,0,73,73,RGB(0,0,0));
    Comment faire pour substituer la couleur blanche à la volée?

    merci pour votre aide

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Par défaut
    Citation Envoyé par farscape
    Salut farscape, merci pour ta réponse
    Mais j'ai une question qui subsiste, si je fais la chose suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(int i=0; i<16;i++) 
    { 
      Image.SetPixel(99,i,RGB(0,0,0)); 
    }
    Je change les pixel aléatoirement... hors comment distinguer mes pixels blancs des noirs?

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    avec getpixel tu peux récuperer leurs couleurs

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Par défaut
    FARSCAPE, tu es TROP FORT
    MERCI INFINIMENT

    pour ce que cela peut aider, j'ai fais la chose suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    for(int i=0; i<48;i++) 
    { 
    for(int j=0; j<48;j++)
    {
    COLORREF currentColor = RGB(255,255,255);
    COLORREF getColor = pDC->GetPixel(i,j);
    if(getColor == currentColor)
    pDC->SetPixel(i,j,RGB(255,0,0));
    }
    
    }
    
    il ne reste plus qu'à passer le currentColor en argument dans ma méthode

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Par défaut
    Citation Envoyé par nico-pyright(c)
    avec getpixel tu peux récuperer leurs couleurs
    yes c'est ce que je viens de voir
    merci

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Par défaut
    Je viens de voir un petit problème... Je fais un test en "dur" pour voir si mon image est toujours blanche après un setpixel. En effet, celle-ci se modifie visuellement mais j'ai l'impression que ce n'est qu'une "surcouche".

    Dans cet exemple, l'image se colorie bien en rouge. Si je lui demande de la "recolorier" à nouveau, elle devrait être bloquée par le "if", étant donné que je vérifie si l'image est blanche...
    Cependant, elle se colorie à tous les coups. En d'autres termes, qd je fais mon getColor, j'ai l'impression qu'il se base que sur la couleur original et non pas celle redessiner.

    Est-ce normal? aurais-je oublié qqch?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    for(int i=0; i<48;i++) 
    { 
    for(int j=0; j<48;j++)
    {
    COLORREF getColor = pDC->GetPixel(i,j);
    if(getColor == RGB(255,255,255))
        pDC->SetPixel(i,j,RGB(255,0,0));
    }
    }
    

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Par défaut
    hihihi j'ai trouvé mon erreur, je rechargeais l'image à chaque fois, donc elle était blanche à chaque rechargement

  9. #9
    mat.M
    Invité(e)
    Par défaut
    Vaut mieux créer un DC en mémoire quitte à l'afficher par la suite avec StrechBlt ( voir FAQ...)

    Prendre GetDIBBIts et StretchDIBBIts plutot que GetPixel/SetPixel trop lentes

Discussions similaires

  1. Réponses: 6
    Dernier message: 25/09/2014, 20h58
  2. [XL-2010] Forcer une couleur dans la MFC
    Par Harry Covair dans le forum Excel
    Réponses: 4
    Dernier message: 29/09/2011, 08h58
  3. Réponses: 3
    Dernier message: 07/08/2008, 13h19
  4. Réponses: 3
    Dernier message: 23/06/2007, 15h07
  5. Réponses: 2
    Dernier message: 31/07/2006, 15h28

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