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

Visual C++ Discussion :

boite dialog & appele fonction


Sujet :

Visual C++

  1. #1
    Membre éclairé Avatar de meera
    Inscrit en
    Mai 2006
    Messages
    294
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 294
    Par défaut boite dialog & appele fonction
    svp
    j'ai une boite dailog comme celui çi:
    http://www.9q9q.org/index.php?image=P8faa3b96RRp

    je choisis une image de l liste, je clock sur afficher pour l'affichage
    mnt je fait entrer la largeur ,hauteur ,et initialiser le générateur et quand je click sur modif je vx modifier l'image affichée (ou bien juste une portion)( qui est tte noir)
    j'ecris la fonction randomspatia ui génére des nombres pseudo aléatoire,( que je l'appelé ds fonction modif pour modifier l'image affichée)

    Code :
    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
     
    void CImage::randomspatial( 
    		 int nWidth,               //[in] Largeur du bitmap  en pixels
    		  int nHeight,		       //[in] Hauteur du bitmap  en pixels
    		  int nscan,
    		  int seed,
    		float matrand[]
     
    		)
    {
     
     // srand( (unsigned ) seed );
    //   srand( (unsigned)time( NULL ) );
     
     
    	for (int  i=0; i<nWidth; i++)
    	{
    		for (int j=0;j<nHeight;j++)
    		{
     
     
    			matrand[j*nscan +i]=rand()/(float)RAND_MAX ;
    		//	matrand[i][j]=rand()/(1+(double)RAND_MAX);
    		}
    	}
     
    		for ( i=0; i<nWidth; i++)
    			{
    			for (int  j=0;j<nHeight;j++)
    				{
    				if ( 	matrand[j*nscan +i]<0.5)
     
    						matrand[j*nscan +i]=0;    // ou bien materand[i][j]=-1;
    				else
    							matrand[j*nscan +i]=255;   // ou bien materand[i][j]=+1;
    			}
    		}
     
    }
    et la fonction modif :

    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    void CContrasteDlg::OnModif() 
    {
    	// TODO: Add your control notification handler code here
    	float matrand[56985];
    	int Larg = GetDlgItemInt(IDC_LARG);
    	int Haut= GetDlgItemInt(IDC_HAUT);
    	int Initial = GetDlgItemInt(IDC_INITGEN);
    	m_image.randomspatial(Larg,Haut,Larg,Initial,matrand);
    		GetDlgItem(IDC_IMAGE)->InvalidateRect(NULL);
    }
    le pb c que lors de l'exécution,qd je click sur le button modifier rien ne change
    est ce que j'ai fait une erreur!!!!!!!!!

  2. #2
    Membre éclairé Avatar de meera
    Inscrit en
    Mai 2006
    Messages
    294
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 294
    Par défaut
    salut
    [code]
    j'ai réussi à appeler la fonction mais j'ai un petit pb
    par exemple lorsue je click sur une image" marques128" ds la liste j'affiche un careau noir de taille 28*128
    mnt je saisi largeur et hauteur et je click sur modifier , je la modifier mais pas comme les valeurs saisi
    http://www.9q9q.org/index.php?image=XhnEEbUqPzyv

    je suis pas pkoi????
    le code est comme suit:
    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
     
    void randomspatial( 
    		 int nWidth,               //[in] Largeur du bitmap  en pixels
    		  int nHeight,		       //[in] Hauteur du bitmap  en pixels		  
    		int seed,
    		double matrand[]
    		)
    {
     
     srand( (unsigned ) seed );
     
     
    		for (int  i=0; i<nWidth; i++)
    			{
    			for (int j=0;j<nHeight;j++)
    				{
     
    			matrand[j*nWidth +i]=rand()/(float)RAND_MAX ;
     
    				}
    			}
     
    		for ( i=0; i<nWidth; i++)
    			{
    			for (int  j=0;j<nHeight;j++)
    				{
    				if ( 	matrand[j*nWidth+i]<0.5)
     
    						matrand[j*nWidth +i]=0;    // ou bien materand[i][j]=-1;
    				else
    							matrand[j*nWidth +i]=255;   // ou bien materand[i][j]=+1;
    					}
    				}
     
    }
    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
     
    BOOL CImage::MethodeSpatiale(int Larg, int Haut,int seed,double matmarque[])
    {
    	 if(!m_hDib)
    		return FALSE;	// DIB non valide
     
    	// On crée une nouvelle zone mémoire pour accueillir le nouveau bitmap
    	HGLOBAL hNewDib=GlobalAlloc(GHND, GlobalSize(m_hDib));
    	if(!hNewDib)
    		return FALSE;  // Pas assez de mémoire ou problème
     
    	LPBITMAPINFOHEADER BmSrcInfo=(LPBITMAPINFOHEADER)GlobalLock(m_hDib);
    	LPBITMAPINFO biSrc=(LPBITMAPINFO)BmSrcInfo;
     
    	LPBITMAPINFOHEADER BmDestInfo=(LPBITMAPINFOHEADER)GlobalLock(hNewDib);
    	LPBITMAPINFO biDest=(LPBITMAPINFO)BmDestInfo;
     
    	// Détermination du nombre de couleurs
    	int nColors = BmSrcInfo->biClrUsed ? BmSrcInfo->biClrUsed : 0x1FF & (1 << BmSrcInfo->biBitCount);
     
    	// Copie du Header + palette ds le nouveau bitmap
    	CopyMemory(biDest, biSrc, BmSrcInfo->biSize+nColors*sizeof(RGBQUAD));
     
    	// Détermination de la zone des bits de l'image source et largeur lignes en octets
    	BYTE* lpSrcBits = (BYTE*)BmSrcInfo+BmSrcInfo->biSize+nColors*sizeof(RGBQUAD);
    	int nScanWidth = WIDTHBYTES(BmSrcInfo->biWidth * BmSrcInfo->biBitCount);
     
    	// Détermination de la zone des bits de l'image destination
    	BYTE* lpDestBits = (BYTE*)BmDestInfo+BmDestInfo->biSize+nColors*sizeof(RGBQUAD);
     
    //	double	matmarque[99589];
     
     
    // appelle de fonctio  de random spatiale
    	randomspatial(Larg, Haut,seed ,matmarque);
    	// Traitement différent selon nombre de bits/pixel
     
     
     
    			for(int x=0; x<Larg; x++)
    				for(int y=0; y<Haut; y++)
    			{
    				lpDestBits[y*Larg+x] = lpSrcBits[y*Larg+x] + matmarque[y*Larg+x];
    			//	lpSrcBits[y*Large+x] = matmarque[y*Large+x];
    			//	lpDestBits[y*Large+x] = lpSrcBits[y*Large+x];
    			}
     
     
    	GlobalUnlock(m_hDib);
    	GlobalUnlock(hNewDib);
    	GlobalFree(m_hDib);
     
    	// On supprime l'ancien DIB et on le remplace par le nouveau
    	m_hDib = hNewDib;
    	return TRUE;
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    void CContrasteDlg::OnModif() 
    {
    	// TODO: Add your control notification handler code here
    	double matrand[99985];
    	int Larg = GetDlgItemInt(IDC_LARG);
    	int Haut= GetDlgItemInt(IDC_HAUT);
     
    	int Initial = GetDlgItemInt(IDC_INITGEN);
     
    	m_image.MethodeSpatiale(Larg,Haut,Initial,matrand);
    		GetDlgItem(IDC_IMAGE)->InvalidateRect(NULL);
    }
    est ce qq1 peut m'aider!!!!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appel fonction php dans code javascript
    Par licorne dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/03/2008, 10h55
  2. PB pour Appel fonction dans DLL sur Builder3
    Par Fbartolo dans le forum C++Builder
    Réponses: 15
    Dernier message: 10/03/2005, 12h58
  3. pro c appelle fonction connexion
    Par friends dans le forum Oracle
    Réponses: 3
    Dernier message: 10/05/2004, 17h07
  4. Appels fonctions DLL
    Par Micka91 dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 17/02/2004, 17h32
  5. Appel fonction assembleur en C
    Par grandjouff dans le forum C
    Réponses: 6
    Dernier message: 07/12/2003, 20h43

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