begin process at 2012 02 10 18:30:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

mon image s'efface!!!


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

mon image s'efface!!!

dimanche 2 janvier 2005 à 05:31:35 | mon image s'efface!!!

tdeco

Bonjour
En fait, j'ai une boite de dialogue avec plusieurs boutons et une zone ou j'affiche une image bmp. Pour afficher l'image, je procède par la façon suivante:
HWND hBouton = GetDlgItem(hDlg_IHM_MAIN, IDC_IMAGE);
HDC hdc = GetDC(hBouton);
Dessiner_Image(hDlg_IHM_MAIN,hdc,&buffer);
ReleaseDC(hDlg_IHM_MAIN,hdc);

hDlg_IHM_MAIN est ma boite de dialogue principale,
IDC_IMAGE l'identifiant de ma zone d'affichage
Dans la fonction "Dessiner_Image" , j'utilise StretchBlt pour dessiner l'image dans le buffer.

Mon image s'affiche bien. J'appuis sur un bouton de l'IHM, je crée alors une autre boite de dialogue. Lorsque je ferme celle-ci , mon image s'est effacé

Quelqu'un peut il m'aider

Merci d'avance
dimanche 2 janvier 2005 à 11:16:09 | Re : mon image s'efface!!!

BruNews

Administrateur CodeS-SourceS
BM_SETIMAGE

ciao...
BruNews, MVP VC++
dimanche 2 janvier 2005 à 16:26:42 | Re : mon image s'efface!!!

tdeco

Qu'est ce ke tu entends par là?
dimanche 2 janvier 2005 à 16:36:09 | Re : mon image s'efface!!!

BruNews

Administrateur CodeS-SourceS
Regarde BM_SETIMAGE dans MSDN ou recherche forum tu auras aussi la reponse.

ciao...
BruNews, MVP VC++
mercredi 5 janvier 2005 à 11:03:28 | Re : mon image s'efface!!!

tdeco

Merci de ta réponse, mais je ne pense pas que cela puisse m'aider.
Car en fait mon affichage est commandé par un thread et se fait cycliquement
Je fais:
//Dans mon thread

HWND hBouton = GetDlgItem(hDlg_IHM_MAIN, IDC_IMAGE);
HDC hdc = GetDC(hBouton);
Dessiner_Image(hDlg_IHM_MAIN,hdc,&buffer);
ReleaseDC(hDlg_IHM_MAIN,hdc);

//buffer est un buffer image contenant l'image à afficher

//Ma fonction dessiner
BOOL Dessiner_Image(HWND hDlg,HDC hDC,ClsEm_CVImage *Em_Img)
{

 HDC hdcMem = NULL;
 HGDIOBJ hbmOld = NULL;
 HBITMAP hBmp_Mem;
 BITMAPINFO * pMyBitmapInfo;
 BYTE * pImage;
 int i;

 long Hauteur_Img = Em_Img->GetImageHeight();
 long Largeur_Img = Em_Img->GetImageWidth();
   
 pMyBitmapInfo = (BITMAPINFO *) calloc(1,sizeof(BITMAPINFO) + 256 * sizeof(RGBQUAD));
// pImage = (BYTE*)calloc(1,Largeur_Img*Hauteur_Img);

// initialisation de la palette du bitmap
 for ( i=0; i<256; i++)
 {
  pMyBitmapInfo->bmiColors[i].rgbBlue = i;
        pMyBitmapInfo->bmiColors[i].rgbGreen = i;
        pMyBitmapInfo->bmiColors[i].rgbRed = i;
        pMyBitmapInfo->bmiColors[i].rgbReserved = 0;
    }

// initialisation du header du bitmap
    pMyBitmapInfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
    pMyBitmapInfo->bmiHeader.biWidth = Largeur_Img;   
    pMyBitmapInfo->bmiHeader.biHeight = Hauteur_Img; 
    pMyBitmapInfo->bmiHeader.biPlanes = 1;            
    pMyBitmapInfo->bmiHeader.biBitCount = 8;      // nb de bit par pixel
    pMyBitmapInfo->bmiHeader.biCompression = 0;   // non compressé
    pMyBitmapInfo->bmiHeader.biSizeImage = 0;         
    pMyBitmapInfo->bmiHeader.biXPelsPerMeter = 0;  
    pMyBitmapInfo->bmiHeader.biYPelsPerMeter = 0;  
 pMyBitmapInfo->bmiHeader.biClrUsed = 256;           
    pMyBitmapInfo->bmiHeader.biClrImportant = 0;      

 
 hBmp_Mem = CreateDIBSection(hDC, pMyBitmapInfo, DIB_RGB_COLORS, (void**)&pImage, NULL, 0);

 for (int j=0;j<Hauteur_Img;j++)
  for (int i=0;i<Largeur_Img;i++)
   pImage[Largeur_Img*j+i]  = Em_Img->m_BufImage[Largeur_Img*(Hauteur_Img-1-j)+i];

 

 hdcMem = CreateCompatibleDC(hDC); 
 hbmOld = SelectObject(hdcMem, hBmp_Mem); //selection du bitmap

  BOOL test = StretchBlt(hDC,0,0,aff_x,aff_y,hdcMem,0,0,Em_Img->GetImageWidth(),Em_Img->GetImageHeight(),SRCCOPY);
 
 BOOL test1 = DeleteDC(hdcMem);
 BOOL test2 = DeleteObject(hbmOld);
 BOOL test3 = DeleteObject(hBmp_Mem);
 
 if(pMyBitmapInfo!=NULL)
 {
  free((void *)pMyBitmapInfo);
 }
 if(pImage!=NULL)
 {
  free((void **)&pImage);
 }

}

mercredi 5 janvier 2005 à 16:15:03 | Re : mon image s'efface!!!

ymca2003

La zone ou tu affiche ton bitmap, met là en tant que bouton ayant le style OWNER_DRAW dans ton dialogue. Au lieu d'appeler Dessiner pour rafrâichir, appelle InvalidateRect sur le bouton, ce qui va générer le message WM_DRAWITEM. Lors du traitement de ce message (après un rafraichissement de ta part ou tu système), dessine ce ce que tu veux en fonction d'un état global (en l'occurence le buffer avec le bitmap)


Cette discussion est classée dans : image, hdlg, hdc, main, ihm


Répondre à ce message

Sujets en rapport avec ce message

mon image s'efface!!! [ par tdeco ] BonjourEn fait, j'ai une boite de dialogue avec plusieurs boutons et une zone ou j'affiche une image bmp. Pour afficher l'image, je procède par la faç Déplacer une image avec la souris [ par ingelishome ] Bonjour,Je suis en train de faire une petite appli sous Borland C++ Builder dans lequel j'ai besoin de déplacer une image. Pour ce faire j'ai eu au dé [API Win32]centrer une image mise en background [ par sethesh ] Salut à tous dans une appli Win32 j'affiche une image en background en fond de ma fenetre principale. Cette image est centrée en haut a gauche par def Supprimer l'image (icone) [ par icedreamer ] Bonjour !Je charge une image (icone) de cette maniere :LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_ICON_SYS)); hDc=GetDC(hwnd); DrawState(hD afficher une image contenue dans un HDC [ par aujeanfr ] Bonjour,j'essaie d'afficher une image contenue dans un HDC après un traitement d'image avec setpixel().Voici mon code : // je fais mon traitement d'im Manipulation de Bitmap [ par rogo ] J'ai réaliser une boite de dialogue sur laquelle j'ai inséré deux Pictures de taille différentes :IDC = IDC_Image_1 et IDC_Image_2Type = BitmapStyle = Image intégré à une Ihm en Monodocument, need help !! [ par FlamZeNioub ] Salut,J'ai fait une Ihm sous Visual studio.net, et une fois la fenetre Monocument crée et les menu défini, quand je lance mon programme, je voudrai qu problème d'affichage image (pictureBox noir) [ par aujeanfr ] Je n'arrive pas à afficher mon image contenue dans mon HDC. En fait je n'ai que du noir dans la PictureBox comme résultat.Voici mon code, merci d'avan Afficher un BITMap en GDI+ [ par psy4meuh ] 'jour à tous, j'ai besoin d'un peu d'aide sur l'utilisation de la librairie GDI+...Dans mon programme, je récupère une image de webcam au format DIB, Un bouton imagé [ par victorcoasne ] Comment faire pour que sur un bouton apparaisse l'image ?J'ai trouvé comment faire apparaître une image : void PrintBmp(HWND hWnd, char *filename, i


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

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

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