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

 


Dernière réponse
Sujet : [Win]Comment mettre un bitmap en mémoire et le charger dans un handle?
Alload Ben je pense que le bitmap est en mémoire avec ma façon, j'initialise un HBITMAP global avec la fonction LoadImage, donc il reste jusqu'à la fin de mon programme.

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Alload Ben je pense que le bitmap est en mémoire avec ma façon, j'initialise un HBITMAP global avec la fonction LoadImage, donc il reste jusqu'à la fin de mon programme.
zop Je sais que çà ne résoud pas proprement ton pb, mais ne peux-tu pas mapper le fichier BMP en mémoire ???
Alload Ben en fait elle marche bien ma méthode, je sais pas ce que j'avais foutu hier comme connerie pour que ça ne marche pas.
:lol: :lol: :lol:
 
Enfin c'est cool. Ca marche :)
Alload Oui mais si je veux garder en mémoire un bitmap qui n'est pas dans les resources?
Carbon_14 En ce qui me concerne, j'utilise le code
handBitMap = LoadBitmap(hInst, MAKEINTRESOURCE(BlocGra));
pour charger une image définie dans les ressources (en fait le bloc des boutons de mon appli).
Le handBitMap est défini en global. Quand je veux utiliser le bitmap, j'écris (16 et 32 bits)
 
{  
      BITMAP     bm;
      HDC        hdcMemory;
      HBITMAP    hbmpOld;
 
      GetObject(handBitMap, sizeof(BITMAP), &bm);
      hdcMemory = CreateCompatibleDC(hdc);
      hbmpOld = (HBITMAP)SelectObject(hdcMemory, handBitMap);
 
      BitBlt(hdc, 4, 2, 28, 28, hdcMemory, 0, 0, SRCCOPY);
 
      SelectObject(hdcMemory, hbmpOld);
      DeleteDC(hdcMemory);
}
 
 
Avec le LoadImage, je sais pas. C'est sans doute analogue.
Alload J'expérimente l'affichage des bitmaps dans une application Windows, j'ai vu qu'il fallait créer un HBITMAP que l'on initalisait avec la fonction LoadImage.
 
Mais j'ai aussi remarqué que le HBITMAP était détruit après son utilisation, du moins comme je l'utilise:
 
HDC hdc;
HDC hdcSrc;
PAINTSTRUCT ps;
 
HBITMAP hbm;
hbm = (HBITMAP)LoadImage(NULL, szFile, IMAGE_BITMAP, Width, Height, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
 
hdcSrc = CreateCompatibleDC(hdcDest);
 
hdc = BeginPaint(hWnd, &ps);
SelectObject(hdcSrc, hbm);
BitBlt(hdcDest, destx, desty, Width, Height, hdcSrc, srcx, srcy, SRCCOPY);
EndPaint(hWnd, &ps);
 
 
Mais dans mon application j'utilise une class qui a une fonction pour afficher un bitmap, le problème c'est que je voulais stocker un HBITMAP initialisé lors de la création d'un objet de ma class, mais comme le HBITMAP est détruit après un affichage ça m'embete un peu.
 
Pour le moment je recharge simplement le bitmap dès que je veux l'afficher, mais ne connaissez-vous pas un moyen de laisser le bitmap en mémoire et de le réutiliser sans le recharger depuis le disque dur?

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