begin process at 2012 05 30 16:07:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Redimenssion de fenêtre et permanence de son contenu (V C++)


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

Redimenssion de fenêtre et permanence de son contenu (V C++)

vendredi 14 mai 2004 à 10:31:27 | Redimenssion de fenêtre et permanence de son contenu (V C++)

TahitiLove

Bonjour,

J'aimerai savoir comment peut on assurer la permanence du contenu d'une fenêtre.
Je m'explique, j'ai créer un projet sous Visual C++ utilisant le MFC (juste pour préciser) qui me permet d'afficher des images puis de les traiter. L'affichage de l'image marche nickel. Par contre, j'ai créer un fonction de calculer et d'afficher son histogramme. Il s'affiche bien à l'endroit que je lui est indiquer. Hélas dés que je touche à la fenêtre, que je la redimensionne ou que je passe sur une autre fenêtre, le dessin de l'histogramme disparait instantanément. Comment puis-je faire en sorte qu'il s'affiche tout le temps.
De plus, j'aimerai aussi savoir comment peut-on récuperer les tailles de la fenêtre pour afficher ce dessin relativement au dimensions de la fenêtre (toujours au centre par exmple).
Je vous colle un bout du code correspondant en espérant que quelqu'un pourra m'aider.

void CMy3View::OnHistogramme()

{

/* Chargement de l'image */

Image *im;



CMy3Doc *pDoc=GetDocument();

if (pDoc->m_dib.m_lpBMIH==NULL)

return;

im=pDoc->m_dib.DibToImage();



/* Calcul de l'histogramme */

double *hist;

long *hist0;

// char *seuil;

char *pics;

int i,nbpic=0;



pics=(char*) malloc (5*sizeof(char));

hist=(double*)malloc(256*sizeof(double));

hist0=Calcul_Histogramme(im);



/* On augmente le contraste dans l'histogramme */

/*for (i=0;i<256;i++)

hist[i]=(double)(hist0[i]*5000)/(double)(im->width*im->height);*/



/* Opération morphologique (Ouverture) sur l'histogramme */

MorphologieHist(hist0);

for (i=0;i<256;i++)

hist[i]=(double)(hist0[i]*5000)/(double)(im->width*im->height);

afficher_hist0(hist,35,330,RGB(255,0,0));



/* Lissation de l'histogramme avec un filtre gaussien */

LissationGaussienne(hist,2);

afficher_hist1(hist,35,330,RGB(0,0,255));



/* Seuillage de l'histogramme */

nbpic=Recherche_Pic(hist,pics);

affiche_hist_pics(hist,35,330,RGB(0,0,255),pics,nbpic);



//seuil=Calcul_Seuil(*hist,*pics);



/* Effacement du buffer image et libération de la mémoire allouer */

delete im;

free(hist);

}

void CMy3View::afficher_hist0(double *hist, int x, int y, COLORREF c)

{

int i,j;

coordonne(x,y,300,300);

for(j=0;j<256;j++)

{

for (i=0;i<(int)(hist[j]);i++)

{

draw_point(j+x,y-i,c);

}

}

}


void CMy3View::afficher_hist1(double *hist, int x, int y, COLORREF c)

{

int j,y1,y2;

coordonne(x,y,300,300);

for(j=1;j<256;j++)

{

y1=y-(int)(hist[j-1]);

y2=y-(int)(hist[j]);

draw_line(j+x-1,y1,j+x,y2,c,1);

}

}



void CMy3View::show(int n,int x,int y)

{

char c[10];

itoa(n,c,10);

CClientDC dc(this);

OnPrepareDC(&dc);

dc.TextOut(x,y,c);

}



void CMy3View::draw_line(int x1,int y1,int x2,int y2,COLORREF c,int size)

{

CClientDC dc(this);

OnPrepareDC(&dc);



CPen crayon(PS_SOLID,size,c);

dc.SelectObject(&crayon);

dc.MoveTo(x1,y1);

dc.LineTo(x2,y2);

}


void CMy3View::draw_point(int x,int y,COLORREF c)

{

CClientDC dc(this);

OnPrepareDC(&dc);

dc.SetPixel(x, y, c);

}




Je n'ai mis que les fonctions que je pense concernées. Alors si quelqu'un à un conseil, je suis preneur.
Merci. :)




vendredi 14 mai 2004 à 10:53:58 | Re : Redimenssion de fenêtre et permanence de son contenu (V C++)

BruNews

Administrateur CodeS-SourceS
Taille de fenetre: GetWindowRect().
Taille de zone client: GetClientRect().
Dessiner dans WM_PAINT.

ciao...
BruNews, Admin CS, MVP Visual C++
vendredi 14 mai 2004 à 11:15:43 | Re : Redimenssion de fenêtre et permanence de son contenu (V C++)

TahitiLove

Ok pour les dimensions.

Mais j'ai pas compris pour le dessin dans WM_PAINT. Est-ce que tu peut préciser stp ??

Merci pour ta réponse.
vendredi 14 mai 2004 à 11:18:31 | Re : Redimenssion de fenêtre et permanence de son contenu (V C++)

BruNews

Administrateur CodeS-SourceS
Regarde dans le sabir MFC a quoi correspond WM_PAINT, peut-etre OnPaint() ou un truc de ce genre.

ciao...
BruNews, Admin CS, MVP Visual C++


Cette discussion est classée dans : int, fenêtre, dc, histogramme, hist


Répondre à ce message

Sujets en rapport avec ce message

Choisir le DC d'une fenêtre [ par vecchio56 ] Salut, Je voulais savoir si'il est possible de dessiner une fenêtre dans un device contexte spécifique? Par exemple, dessiner tous les fenêtre filles les sous fenetres en glut n'en font qu'a leurs tetes [ par whikie ] Bonjour,je voudrais comprendre le placement des glutSubWindow.Voici les infos que j'ai :glutCreateSubWindow La fonction glutCreateSubWindow crée une Getpixel et Setpixel trop lents! :( [ par Omeya ] Bonsoir à tous,Depuis quelques temps, j'essaye de réaliser un capteur d'écran en temps réel et les seuls instructions que je sais vraiment utiliser so dessiner dans une boite de dialog [ par olfa7183 ] salut,je veux creer un compteur qui compte les monnaie inserees.tout d'abord je veux le dessiner puis le programmer.pour le dessin j'ai utilisé le cod Lenteur 3 [ par SAKingdom ] Pour résumé, j'ai fait une petite DLL graphique 2D et j'avais (et j'ai toujours) un problème écransant de lenteur. J'utilisait SetPixel (j'utilise tou Pb d'affichage [ par mrous ] Bonjour,Je souhaite afficher des graphiques ds une boite de dialogue. Pour cela, j'utilise une libraire déja ecrite que j'ai trouvé sur le web cependa probleme avec la fonction glreadpixels [ par sousoi ] je trouve que on peut implimenter l'algo de z buffer avec opengl et recuperer les donnee avec la fonction de opengl "glreadpixels" mais je trouve un calcule le vecteur moyenne de l'histogramme [ par dardarsalma ] salut,je vous demande s'ils vous plait de m'aider: aprés l'obtention des chaines de freeman(de 0 à 7) de frame vidéo en cour de traitement,on calcul Calculer Hauteur ListView [ par Zootella ] Hello, Voilà, j'ai une fenêtre avec une toolbar et une statut bar. Je voudrais ajouter une listview entre ces 2 controles, tout ça dynamiquement. J'a Choosepixelformat & Setpixelformat [ par mondrone ] Voila, je developpe actuellement sur dev-c++, et l'utilisation de ces deux fonctions me renvoie une erreur de linkage. Je voudrais donc savoir ce qui


Nos sponsors


Sondage...

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 : 0,265 sec (3)

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