Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1105 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  PB d'affichage de bitmap

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PB d'affichage de bitmap

n°163249
ashram79
Posté le 21-06-2002 à 11:58:37  profilanswer
 

Salut ,  
 
j'ais gros pb lorsque j'essaye d'afficher un bitmap à l'écran :  
la fonction CreateDIBitmap(...) qui créé mon image ne fonctionne  
pas toujours.  
Le premier affichage marche correctement mais quand j'ouvre une autre fenêtre en parallèle et que j'essaye d'afficher la même image cela ne  
marche plus ( le CreateDIBitmap ne me créé plus le bitmap )  
 
ci-dessous mon code  
si qq un pouvais m'aider  
il me sauverait la vie  
merci d'avance pour votre aide  
 
a+  
 
 
 
 
 
 
 
HANDLE hDIB ; // variables utilisées pour la  
BITMAPINFOHEADER * infoHeader ; // création du bitmap affiché  
BITMAPINFO * infoDib ;  
 
/**  
* Pointeur sur l'image BMP affiché à l'écran.  
*/  
Graphics::TBitmap * imgDisplayed ;  
 
hDIB = GlobalAlloc(GMEM_MOVEABLE, sizeof(BITMAPINFO) + largeur * img->getYImg() ) ;  
 
infoDib = (LPBITMAPINFO) GlobalLock(hDIB) ;  
infoHeader = (LPBITMAPINFOHEADER) infoDib ;  
 
// Construction de l'info header du bmp qui sera affiché  
 
infoHeader->biSize = sizeof(BITMAPINFOHEADER) ;  
infoHeader->biWidth = largeur ;  
infoHeader->biHeight = - img->getYImg() ;  
infoHeader->biPlanes = 1 ;  
infoHeader->biBitCount = bpp ;  
infoHeader->biCompression = 0 ;  
infoHeader->biSizeImage = 0 ;  
infoHeader->biXPelsPerMeter = 0 ;  
infoHeader->biYPelsPerMeter = 0 ;  
infoHeader->biClrUsed = 0 ;  
infoHeader->biClrImportant = 0 ;  
 
infoDib->bmiHeader = *infoHeader ;  
 
// Construction de la nouvelle palette  
 
int center = static_cast<int> (img->getCenterGreyLevel()[ currentSlice ]) ;  
int width = static_cast<int> (img->getWidthGreyLevel()[ currentSlice ]) ;  
int ptaille1 = center - width / 2 ;  
int ptaille2 = center + width / 2 ;  
 
for ( int i = 0 ; i <= ptaille1 ; i++ )  
{  
infoDib->bmiColors[i].rgbBlue = infoDib->bmiColors[i].rgbGreen = infoDib->bmiColors[i].rgbRed = (BYTE) 0 ;  
infoDib->bmiColors[i].rgbReserved = (BYTE) 0 ;  
}  
 
for ( int i = ptaille1 + 1 ; i < ptaille2 ; i++ )  
{  
infoDib->bmiColors[i].rgbBlue = infoDib->bmiColors[i].rgbGreen = infoDib->bmiColors[i].rgbRed = (BYTE)(255*(i - ptaille1 )/ width );  
infoDib->bmiColors[i].rgbReserved = (BYTE) 0 ;  
}  
 
for (int i = ptaille2 ; i < 256 ; i++ )  
{  
infoDib->bmiColors[i].rgbBlue = infoDib->bmiColors[i].rgbGreen = infoDib->bmiColors[i].rgbRed = (BYTE) 255 ;  
infoDib->bmiColors[i].rgbReserved = (BYTE) 0;  
}  
 
// Destruction de l'ancien handle de bitmap  
 
if ( imgDisplayed != NULL )  
{  
HBITMAP hbmp = imgDisplayed->ReleaseHandle() ;  
DeleteObject( hbmp ) ;  
delete imgDisplayed ;  
}  
 
// Création du nouveau handle de bitmap  
 
imgDisplayed = new Graphics::TBitmap ;  
 
// Chargement de l'image  
 
imgDisplayed->Handle = CreateDIBitmap( GetDC( owner->Handle ) , infoHeader , CBM_INIT , img->getImgData()[ currentSlice ] , infoDib , DIB_RGB_COLORS ) ;

mood
Publicité
Posté le 21-06-2002 à 11:58:37  profilanswer
 

n°163297
ITM
Avatar peint à la main
Posté le 21-06-2002 à 12:49:00  profilanswer
 

Solution : essaye la SDL ou Allegro  [:yaisse1v]
 
Exemple avec ALlegro:
 
------------------------
BITMAP* mon_bitmap;
 
//charge le bitmap
mon_bitmap = load_bitmap("Mon_bitmap.bmp" );
 
//Dessine le bitmap aux coordonnées (0,0)
draw_bitmap(screen, mon_bitmap, 0,0);
-------------------------
 
C'est pas plus simple, non??


Message édité par ITM le 21-06-2002 à 12:50:57

---------------
iteme.free.fr | Mon feedback
n°163326
kjus
Posté le 21-06-2002 à 13:32:33  profilanswer
 

j'allais le dire.
si tu veux des infos : www.allegro.cc

n°163331
ITM
Avatar peint à la main
Posté le 21-06-2002 à 13:37:20  profilanswer
 

Va voir sur mon site, j'ai même fait un tutorial pour débuter ;)


---------------
iteme.free.fr | Mon feedback
n°164403
ashram79
Posté le 24-06-2002 à 10:37:34  profilanswer
 

ok merci  :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  PB d'affichage de bitmap

 

Sujets relatifs
[visual C++] Affichage d'images dans un HTML viewer[ C++ Builder 6 ] Pb d'affichage de bitmaps
Affichage du contenu d'un fichier texte[phpBB 2.1] Affichage des dernières discussions en cours ... (résolu)
[PHP]affichage de resultats mysql ds un <select>[PHP] Affichage image prise aléatoirement dans une table...
[C++] Affichage de lignes de texte défilant (console)...[Interbase] Problème lors de l'affichage d'une exception
Affichage commentaire sur texte au passage de la souris +question CSS[affichage 2D] recherche solution... pb de couleurs.... (ça marche !)
Plus de sujets relatifs à : PB d'affichage de bitmap


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR