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

C++ Discussion :

Comment fonctionne le paint


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    ingénieur mécanique
    Inscrit en
    Février 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : ingénieur mécanique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 27
    Points : 18
    Points
    18
    Par défaut Comment fonctionne le paint
    Bonjour,

    Dans le paint de ma fenêtre, lorsque j'augmente sa taille,
    je fait un déplacement de bouton par "Button_CANCEL.MoveWindow"
    Tout ce passe bien; dès que je change la dimension de la fenetre,
    le bouton change de place

    Dans le même paint je retrace un courbe avec des
    dc.MoveTo et dc.LineTo
    et là, rien ne se passe.
    Il faut iconiser la fenêtre et la regrandir pour retracer la courbe.

    Quelqu'un voit-il mon erreur?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 116
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    il faut parfois forcer le rafraichissement de l'affichage.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre à l'essai
    Homme Profil pro
    ingénieur mécanique
    Inscrit en
    Février 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : ingénieur mécanique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Merci de ta réponse.

    Je ne te cache pas que le mot "parfois" me gène un peu.
    Mais soit. Je veux bien le forcer mais comment, je suis déjà dans le paint

    Si j'appelle le paint dans le paint....ça va m.....

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 116
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Certaines actions ne rafraichissent pas automatiquement la fenêtre.
    Ca semble être le cas du tracé de courbe, et ça peut se comprendre : si tu souhaites tracer de nombreuses courbes et qu'à chacune l'affichage est mis à jour, tu passes plus de temps à afficher qu'à tracer.

    Maintenant, vu qu'on ne sait rien de ton projet (à part que c'est du C++ à priori)..
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 477
    Points
    11 477
    Billets dans le blog
    11
    Par défaut
    Moi il y a quelque chose qui me choque, c'est le déplacement du bouton dans le paint.
    Pourquoi ne le fais-tu pas dans dans le OnSize, qui est fait pour ça ?

    Pour le problème de dessin, peux-tu montrer un bout de code qui reproduirait le problème ?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  6. #6
    Membre à l'essai
    Homme Profil pro
    ingénieur mécanique
    Inscrit en
    Février 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : ingénieur mécanique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Oui dragonjoker59, je peux le faire.
    Mais c'est un peu lourd
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    void graphique::OnPaint()
    {
    		int			i,j;
    		int			fenetre_x,fenetre_y;
    		int			marge_gauche_x, marge_droite_x,marge_sup_y,marge_inf_y;
    		int			centreX,centreY;
    		int			Xdebut,Ydebut,Xfin,Yfin;
    		double		gx;									// grandissement X
    		double		gy;									// grandissement Y
    		CRect		rect_ok, rect_cancel, rect_graphique;
    		CPaintDC	dc(this);							// device context for painting
    		double		graduation[3]={1,2.5,5};
     
    		// TODO: ajoutez ici le code de votre gestionnaire de messages
    		// N'appelez pas CDialogEx::OnPaint() pour la peinture des messages
     
    		marge_gauche_x=15;		// la courbe débute à 15 pixels du bord
    		marge_droite_x=15;		// la courbe fini à 15 pixels du bord
    		marge_sup_y=15;			// la courbe débute à 15 pixels du haut
    		marge_inf_y=30;			// la courbe débute à 15 pixels du bas PLUS 15 pixels à cause des boutons
     
    		GetClientRect(&rect_graphique);				// Position X et Y et dimension dX et dY de la fenetre graphique => X et Y = 0 et dX et dY = dimension de la fenetre
    		fenetre_x=rect_graphique.right - marge_gauche_x - marge_droite_x;		// 30 = bord droit et bord gauche
    		fenetre_y=rect_graphique.bottom - marge_sup_y - marge_inf_y;			// 70 = bord sup et bord inf
     
    		// Déplacement des boutons OK et CANCEL
    		CButton_OK.GetClientRect(&rect_ok);
    		CButton_CANCEL.GetClientRect(&rect_cancel);
    		CButton_OK.MoveWindow(rect_graphique.right-rect_cancel.right-rect_ok.right , rect_graphique.bottom-rect_ok.bottom , rect_ok.right, rect_ok.bottom);
    		CButton_CANCEL.MoveWindow(rect_graphique.right-rect_cancel.right , rect_graphique.bottom-rect_cancel.bottom , rect_cancel.right , rect_cancel.bottom);
     
    		// tracé des courbes
    		for (j=0; j<NbCourbe; j++)				// faire chaque courbe j
    		{
    			// Noms des courbes
    			dc.SelectObject(pen[j]);
    			SetTextColor(dc,couleur[j]);
    			dc.TextOutW(rect_graphique.right-100, 20+j*20, legendes[j], legendes[j].GetLength() ) ;
     
    			for (i=0 ; i<tabN ; i++ )		// faire chacun point i de la courbe j
    			{
    				if(tableau[i][0][j] < axe[0][0])axe[0][0]=tableau[i][0][j];
    				if(tableau[i][0][j] > axe[0][1])axe[0][1]=tableau[i][0][j];
     
    				if(tableau[i][1][j] < axe[1][0])axe[1][0]=tableau[i][1][j];
    				if(tableau[i][1][j] > axe[1][1])axe[1][1]=tableau[i][1][j];
     
    				gx = (double)(fenetre_x - marge_gauche_x - marge_droite_x)  / (abs(axe[0][0]) + abs(axe[0][1]));		// grandissement X
    				gy = (double)(fenetre_y - marge_sup_y    - marge_inf_y   )  / (abs(axe[1][0]) + abs(axe[1][1]));		// grandissement Y
     
    				centreX = marge_gauche_x + (int)(abs(axe[0][0]) * gx);			// Position X du centre de l'axe OX OY
    				centreY = marge_sup_y    + (int)(abs(axe[1][1]) * gy);			// Position Y du centre de l'axe OX OY
     
    				Xfin = (centreX + (int)(tableau[i][0][j] * gx));
    				Yfin= (centreY - (int)(tableau[i][1][j] * gy));
     
    				// tracé des axes
    				dc.MoveTo(marge_gauche_x,centreY);
    				dc.LineTo((fenetre_x - marge_droite_x),centreY);
    				dc.MoveTo(centreX,(fenetre_y - marge_inf_y));
    				dc.LineTo(centreX,marge_sup_y);
     
    				// Noms des axes
    				dc.TextOutW(centreX , marge_sup_y , titres[0], titres[0].GetLength() ) ;
    				dc.TextOutW(rect_graphique.right-titres[1].GetLength()*10 , centreY, titres[1], titres[1].GetLength() ) ;
     
    				if(i > 0)
    				{
    					Xdebut = (centreX + (int)(tableau[i-1][0][j] * gx));
    					Ydebut = (centreY - (int)(tableau[i-1][1][j] * gy));
    				}
    				else
    				{
    					Xdebut=Xfin;
    					Ydebut=Yfin;
    				}
    				dc.MoveTo(Xdebut,Ydebut);
    				dc.LineTo(Xfin,Yfin);
    			}
    		}
    	//PumpWaitingMessages();	// sert à rien
    }
    Ceci étant, je ne connais pas ce ONSIZE... je vais regarder

Discussions similaires

  1. [JSF] comment fonctionne <h:message> ?
    Par anitshka dans le forum JSF
    Réponses: 5
    Dernier message: 29/06/2005, 17h36
  2. Comment fonctionne TXmlDocumment ????
    Par almisuifre dans le forum C++Builder
    Réponses: 8
    Dernier message: 18/02/2005, 12h54
  3. comment fonctionne une interface graphique???
    Par elekis dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 27/10/2004, 23h10
  4. Comment fonctionne le ClassExplorer ?
    Par borisd dans le forum C++Builder
    Réponses: 7
    Dernier message: 30/09/2004, 17h44
  5. Comment fonctionne le CVS ?
    Par mathieu dans le forum CVS
    Réponses: 6
    Dernier message: 23/03/2004, 11h26

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