Accueil > Forum > > > > Dessiner un rectangle dans la fenêtre principale de l'application
Dessiner un rectangle dans la fenêtre principale de l'application
mardi 8 septembre 2009 à 17:23:39 |
Dessiner un rectangle dans la fenêtre principale de l'application

27adri27
|
Bonjour,
Je suis nouveau sur le forum, alors excuser moi si je n'adopte pas la bonne méthode...
Voilà, je développe une application en C++ avec une architecture MFC sous Visual Studio 2003.
J'aimerai savoir comment on peut faire pour dessiner tout simplement un rectangle (ou autres formes) dans la fenêtre principale de l'application.
--------------------------------------Code :----------------------------------------------------------------------
Voici les méthodes que j'ai essayé :
CPoint m_FirstPoint;
CPoint m_FirstPoint2;
m_FirstPoint.x = 100 ;
m_FirstPoint.y = 100 ;
m_FirstPoint2.x = 100;
m_FirstPoint2.y = 100;
CRect m_EnclosingRect;
m_EnclosingRect = CRect(m_FirstPoint, m_FirstPoint2); // Définit le rectangle délimiteur
m_EnclosingRect.NormalizeRect();
---------------
OU alors une autre méthode trouver sur le net :
---------------
CDC* pDC;
pDC = m_pMainWnd->GetDC();
pDC->Rectangle(100,100,100,100);
et après je fais un SHOW de l'application.
-------------------------------------------------------------------------------------------------------------------
Cependant ces deux méthodes ne fonctionne pas je ne visualise rien...
Merci à tous ceux qui pourront me filer un petit coup de pattes :)
Bonne soirée à tous et merci vos réponses
Adri
|
|
mercredi 9 septembre 2009 à 11:56:42 |
Re : Dessiner un rectangle dans la fenêtre principale de l'application

ed73
|
Bonjour,
Ton dessin doit être réalisé au moment où la fenêtre se dessine, pour cela il faut dériver la méthode OnDraw.
void MyClass::OnDraw(CDC* pDC)
{
pDC->Rectangle(100,100,100,100);
}
|
|
mercredi 9 septembre 2009 à 12:47:21 |
Re : Dessiner un rectangle dans la fenêtre principale de l'application

27adri27
|
Merci pour ta réponse, c'est sympa !
J'ai essayé ta méthode, mais je n'y arrive pas... Pourrais tu me dire quel message windows tu utilises (ON_WM_???)
car pour récupérer pDC il n'y a que ON_WM_ERASEBKGND(); et dessiner le rectangle dedans ne marche pas..
J'ai une deuxième question : est ce que l'on est obliger de passer par ces méthodes, ne pourrais t on pas dessiner un rectangle dans une autre méthode après que la fenêtre soit créer ?
Merci pour tes réponses.
Passe une bonne journée
Adri
|
|
mercredi 9 septembre 2009 à 13:06:35 |
Re : Dessiner un rectangle dans la fenêtre principale de l'application

ed73
|
La méthode OnDraw est une méthode virtuelle de la classe CWindow, tu dois donc la dériver à l'aide du Class Wizard (Ctrl + W).
Si tu veux passer par les messages, alors il faut utiliser WM_PAINT et la fonction BeginPaint pour récupérer un pDC :
PAINTSTRUCT ps;
CDC *pDC = BeginPaint(&ps);
pDC->Rectangle(100,100,100,100);
EndPaint(&ps);
Il est bien sûr possible de dessiner dans la fenêtre une fois qu'elle est créée, il y a plusieurs possibilités.
- Invalider la fenêtre ou une partie avec InvalidateRect, ce qui va envoyer un WM_PAINT.
- Utiliser GetDC, ce que tu avais fait au début, mais il faut que ta fenêtre soit visible avant.
De toutes manières, il faut tout le temps utiliser la méthode de dessin de toute la fenêtre, OnDraw ou WM_PAINT, lorsque la fenêtre doit se redessiner entièrement, par exemple quand elle change de taille ou quand elle était cachée par une autre fenêtre.
|
|
mercredi 9 septembre 2009 à 14:47:19 |
Re : Dessiner un rectangle dans la fenêtre principale de l'application

27adri27
|
Je te remercie de ton aide, je vais essayer de faire comme tu me le préconises. Je te tiens au courant, en bien comme en mal (j'espère en bien!).
Merci encore,
Bonne journée
Adri
|
|
jeudi 10 septembre 2009 à 17:47:00 |
Re : Dessiner un rectangle dans la fenêtre principale de l'application

27adri27
|
Bonsoir,
Bon j'ai essayé ta solution, mais ça ne marche pas... Je ne dois pas être très doué parce que là je sèche complètement ...
Voilà j'ai essayé tes deux méthodes mais sans succès, alors que la première à l'air simple, je n'y arrive pas, il n'y a rien de dessiner...
Je suis en architecture MFC avec des backgrounds ... peut etre que ça vient de là?...
Si tu as une idée ou un conseil, je suis preneur !
Merci encore
Bonne soirée
Adri
|
|
vendredi 11 septembre 2009 à 00:05:34 |
Re : Dessiner un rectangle dans la fenêtre principale de l'application
|
vendredi 11 septembre 2009 à 10:46:54 |
Re : Dessiner un rectangle dans la fenêtre principale de l'application

27adri27
|
Salut,
Merci de tes conseils, c'est un peu mieux..
Bon il y a du nouveau, c'est un peu mieux, mais pas concluant....
Voici ce que le code que j'ai inséré dans OnPaint( )
CDC *pDC ;
pDC = AfxGetApp()->m_pMainWnd->GetDC();
pDC->Rectangle(100,100,200,200);
C'est nikel, j'ai un beau rectangle de dessiner, cependant, je n'ai plus de background, mais pire, l'appli plante au bout de 5 secondes, et apparemment, il ne connait pas HDC, m_Hdc . .. j'ai regardé dans l'aide, chercher un peu partout, mais sans réel avancée...
En tout cas merci pour ton aide , je continue à chercher et te tiens au courant de mes exploits de développeur !
Adri
|
|
lundi 14 septembre 2009 à 17:52:01 |
Re : Dessiner un rectangle dans la fenêtre principale de l'application

27adri27
|
Réponse acceptée !
Bonsoir,
dsl du temps de réponse, mais weekend oblige !
J'ai réussi à dessiner mes rectangles. En fait je les aient crées directement dans une méthodes à part, car j'avais du mal à gérer la méthode OnPaint (j'ai une architecture logicielle complexe ...
Donc voici le code que j'ai inséré dans la méthode createRectangle()
CDC *pDC ;
pDC = AfxGetApp()->m_pMainWnd->GetDC();
pDC->Rectangle((int)(tempPos.first),(int)(tempPos.second),(int)(tempSize.first),(int)(tempSize.second));
pDC->SetBkMode(TRANSPARENT);
tout simplement ...
En fait j'avais un problème au départ sur le pDC ; résolu avec l'aide de ed73 !! (merci bcp d'ailleur), petite fonction mais qui à son importance !
Voilou , merci encore à toi ed73 , et à charge de revanche !
A bientôt
Adri
|
|
lundi 14 septembre 2009 à 17:54:56 |
Re : Dessiner un rectangle dans la fenêtre principale de l'application

27adri27
|
Dsl juste pour finir, le pb avec la méthode OnPaint était le rafraichissement trop régulier qui me faisait planté l'appli (car j'ai bcp de rectangle à dessiner )
Adri
|
|
Cette discussion est classée dans : application, rectangle, dessiner, firstpoint, firstpoint2
Répondre à ce message
Sujets en rapport avec ce message
Automation : dessiner un graphe dans excel à partir d'une application MFC en VC7 [ par enilda ]
Bonjour,Je voudrais créer un graphique dans une feuille excel à partir d'une</S
DC ou fenetre ? [ par AlexMAN ]
Bonsoir, Voila, je voux explik mon pb : je veux dessiner, 'sur' les controles d'une fenetre, un rectangle, mais j'ai un ptit souci sur comment dessine
pb de contexte mémoire [ par gregory6 ]
bonjour je développe sous visual c++ et les MFC.je créé une classe ds laquelle j'utilise la fonction suivante : elle affiche une valeur tapé au clavie
dessiner une rectangle noir [ par mamstyle ]
bonsoir, en ce moment je fais un projets visual en c++, et j'aimerai avoir de l'aide svp.j'aimerai dessiner dans ma boite de dialogue une zone d'affic
Dessiner des formes sous Visual Studio, projet MFC [ par linuxfr ]
Bonjour, Je dois développer une application graphique sous Visual Studio, et dans une application MFC, j'ai par ailleurs, crée au préalable une boite
GTKMM dessiner une image ou presque [ par Ricool ]
Bonjour, voici mon probleme, je dois dessiner une image dans un rectangle de taille variable (h, l) qui se redimensionne avec ma fenetre. Pour dessin
piking [ par seb_nachos ]
bonjour, je créer une interface graphique Qt dans la quelle g une fenetre OpenGl. j'aimerais dessiner sur cette fenetre ! on m'a expliquer (on doit ut
comment dessiner un repaire orthonormé dans un rectangle [ par witon ]
salut salut ! voila je vous expose mon problème je dois dessiner un repaire orthonormé dans un rectangle (un rectangle minimum qui délimite d'un objet
problème SDL_ttf [ par leonardodicaprio ]
salut,je suis entrain de faire un jeu en C avec SDL. svp j'ai un grand probleme avec sdl_ttf , je crois je l'ai pas bien installé, svp pouvez vous me
Contrôler une application Java depuis Qt [ par christophedlr ]
Bonjour à tous, Je souhaiterais faire un programme qui me permettrait d'envoyer des commandes à une application Java console avec Qt mais je ne trouv
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|