begin process at 2012 05 28 17:46:43
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Multimédia

 > 

Dessiner un rectangle dans la fenêtre principale de l'application


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

ed73

Bonsoir,

Il y a juste une chose à laquelle je n'ai pas fait attention dans ton premier code, il ne faut pas écrire

pDC->Rectangle(100,100,100,100);

car dans ce cas le rectangle fait 0 pixels de large et 0 de haut

Par contre si tu écris

pDC->Rectangle(100,100,200,200);

alors tu afficheras bien un carré de 100 pixels. Tous ce que j'ai écrit précédemment reste donc valable à part ce détail

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


1 2

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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 7,363 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales