Changement de Pen/Brush d'un CDC

Résolu
cs_wallys Messages postés 4 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 15 mars 2008 - 23 août 2007 à 17:51
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 - 23 août 2007 à 22:18
Bonjour à tous,

j'ai un problème (et oui) en MFC. Malgré que je change le Pen de mon DC cela ne modifie pas le dessin des lignes et des rectangles.

Voilà mon code :
-------------------------------------------------------------------------
void maclasse::onPaint()
{
     DrawImage();
}

void maclasse::DrawImage()
{
    CPen NewPen;
    NewPen.CreatePen(PS_SOLID, 6, RGB(255, 25, 5));
    CPen* oldPen = m_cObj.GetDC()->SelectObject(&NewPen);
   //la fonction SelectObject ne retourne pas NULL

    m_cObj.GetDC()->Rectangle(20, 22, 250, 125);



    m_cObj.GetDC()->SelectObject(&oldPen);
}

-------------------------------------------------------------------------

Où m_cObj est un objet CStatic associé à un Picture Control (BITMAP)

Quelqu'un a une idée d'où cela peut venir ? Je suis perdu, je vois pas l'erreur que j'ai dû faire.
Merci d'avance.

5 réponses

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
23 août 2007 à 18:21
Salut,

peut etre que si tu utilisais le meme DC a chaque fois ca marcherait
mieux (i.e. sauver la valeur de retour de m_cObj.GetDC() et la
reutiliser au lieu d'appeler GetDC a chaque fois).
3
cs_wallys Messages postés 4 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 15 mars 2008
23 août 2007 à 17:52
Petite précision (utile), le rectangle s'affiche mais toujours en blanc avec une bordure noire. C'est là le problème.
0
cs_azamharir Messages postés 55 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 1 novembre 2008
23 août 2007 à 19:20
salut
est ce que tu rafraichis le dessin apres avoir modifié le Pen?
0
cs_wallys Messages postés 4 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 15 mars 2008
23 août 2007 à 19:52
Merci pour vos réponses.

En fait 38720 aardman tu as raison. En stockant la valeur de retour, ça marche ! C'est stupide comme erreur, d'autant que c'était temporaire juste pour le test.
Par contre, j'aimerais comprendre pourquoi ça ne fonctionne pas si je rappelle GetDC() ? Le pointeur n'est pas censé changé non ?

Merci.

P.S. :
- =959350 azamharir c'est rafraîchi tout seul puisque c'est dans le OnPaint
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
23 août 2007 à 22:18
Salut,

C'est surement le même object qui t'est retourné (a verifier) mais GetDC initialise surement le dc avec les valeurs par defaut.

Une petite remarque tout de même, si tu es dans un OnPaint (handler
d'un WM_PAINT), tu dois utiliser un object CPaintDC pour dessiner et
non pas le DC retourné par GetDC.
0
Rejoignez-nous