Tracer des axes en fonction de chiffres entrées dans l'édit box

Signaler
Messages postés
268
Date d'inscription
lundi 1 mars 2004
Statut
Membre
Dernière intervention
19 avril 2012
-
Messages postés
298
Date d'inscription
jeudi 12 juin 2003
Statut
Membre
Dernière intervention
9 juillet 2008
-
Salut à tous.

Bon, voilà mon problème: je suis toujours en train de développer mon prog de traceur d'équations, mais depuis 3 mois, je bloque sur la dessus :

Comment tracer les abscisses et les ordonnées en fonctions de données entrée dans les édits box correspondantes ?

Je m'explique : Disons que la gauche de l'écran de graphe (autrement dit la CreateWindowEx servant de zone de graphe) correspond à la variable XMin (disons -7 par exemple) que le bord droit de l'écran de graphe correspond a la variable XMax (disons 7) que le haut de l'écran de graphe corresponde à YMax (disons 5) et enfin que le bas de l'écran de graphe corresponde à YMin (disons -5) et que l'incrémention X se calcule ainsi (XMax - XMin)/XScl et que l'incrémentation Y se calcule ainsi (YMax - YMin) / YScl.

Comment faire pour que le prog me trace les axes en récupérant les données des édits box afin de voir à l'écran, les axes avec les valeurs entrées dans les édits box ainsi que leur taux d'incrémentation ? (-7 -6 -5 -4 ...) ?

Merci d'avance...

PS : pour ceux qui n'aurait pas compris ce que je viens de demander, ils peuvent toujours télécharger ma source
(http://www.cppfrance.com/code.aspx?ID=26485) et voir de quoi il en retourne

Allez, @+

1 réponse

Messages postés
298
Date d'inscription
jeudi 12 juin 2003
Statut
Membre
Dernière intervention
9 juillet 2008
1
-J'aime beaucoup ce genre de projet ou on fait travailler la matiere grise.bonne continuation
-Je deteste lire et analyser les sources des autres (sauf si j'en ai vraiment besoin et je trouve pas d'aide à MDSN) je te dis ça juste pour t'informer que je vais me baser ds ma reponse juste sur tn Exe et ton message au forum sans lire ta source, donc si j'ai raté qq chose que tu as explique ds ton code c'est à toi de me le signaler

/*Supposons que les Id de tes editbox sont :
IDC_EDIT1 pour Xmin
IDC_EDIT2 pour Xmax
IDC_EDIT3 pour XSCL
IDC_EDIT5 pour YMIN
IDC_EDIT6 pour YMAX
IDC_EDIT7 pour YSCL
et hwnd le HANDLE de ta fenetre
*/

///////////Code/////////////////////////////////
//declaration des variables
POINT pp; //ça va nous servir pour tracer les axes (ligne)
POINT centre;//coordonnées du centre du rectangle ou tu veux tracer tes graphes
RECT rcGraphe;//Rectangle où tu vas tracer tes graphes.
HDC hdc;
char cText[3];
int iMin,iMax,iScl,iNbre,iSautreel,iValAct;

////////////////////////////////////////
/*Debut Traitement*/
///////////////////////////////////////

hdc = GetDC(hWnd);

/*///////////
Apres tu dois remplir les valeur centre.x et centre.y
Exemple:
GetClientRect(hWnd,&rcGraphe);
centre.x = (rcGraphe.right-rcGraphe-left)/2
centre.y = (rcGraphe.bottom-rcGraphe.top)/2
///////////*/

MoveToEx(hdc, rcGraphe.left, centre.y, NULL);
LineTo(hdc,rcGraphe.right,centre.y); //on vient de tracer l'axe horizontal
MoveToEx(hdc, centre.x, rcGraphe.top, NULL);
LineTo(hdc,centre.x,rcGraphe.bottom); //on vient de tracer l'axe vertical

// Remplir l'axe horizontal
iMin=GetDlgItemInt(hwnd,IDC_EDIT1,NULL,TRUE);
iMax=GetDlgItemInt(hwnd,IDC_EDIT2,NULL,FALSE);
iScl=GetDlgItemInt(hwnd,IDC_EDIT3,NULL,FALSE);
iNbre=(iMax-iMin)/iScl;
Sautreel=(rcGraphe.right-rcGraphe-left)/iNbre;
pp.x=rcGraphe.left;
pp.y=centre.y;
iValAct=iMin;
while(pp.x<=rcGraphe.right)
{
MoveToEx(hdc, pp.x, pp.y -10, NULL);
LineTo(hdc,pp.x, pp.y +10); //Tracer les petits traits au dessus de chaque numero
wsprintf(cText,"%d",iValAct);
TextOut(hdc,pp.x,pp.y-20,cText,sizeof(cText)-1);//dessiner les numero
pp.x += Sautreel;
iValAct+=iScl;
}
// A toi de faire la meme chose pour l'axe vertical

///////////////////////////////////////
/* FinCode */
///////////////////////////////////////

Si tu as des remarques ou d'autres question, n'hesite pas...