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

  FORUM HardWare.fr
  Programmation
  C++

  Afficher un CBitmap

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Afficher un CBitmap

n°2048655
Nlice
Posté le 13-01-2011 à 12:26:17  profilanswer
 

Bonjour a tous !
 
Alors voilà, mon "problème" est simple, je cherche afficher un CBitmap dans une fenêtre.
 
Pour cela, sous Visual studio 6, je créer donc une "case" bitmap (c'est un projet en mode graphique), mais ensuite . . .
 
J'ai bien mon CBitmap qui s'appelle "MonImage", qui est en fait l'image qui s'affiche par une webcam Axis, et je souhaite ensuite l'afficher (toujours en Bitmap) dans ma fenêtre (Afficher la vidéo quoi, mais en bitmap).
 
Je fais cela pour pouvoir ensuite modifier les image pixel par pixel, je pense que c'est une bonne méthode (peu être pas la meilleure, mais bon . . . ^^')
 
Enfin voilà, du coup si quelqu'un peut m'aider a trouver comment l'afficher, je l'en remercie :) (Sur internet, c'est pas les aides qui manquent, mais j'ai rien compris avec leurs histoire de CDC . . .)

mood
Publicité
Posté le 13-01-2011 à 12:26:17  profilanswer
 

n°2049399
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-01-2011 à 23:54:41  profilanswer
 

Nlice a écrit :

Bonjour a tous !
[...]
 (Sur internet, c'est pas les aides qui manquent, mais j'ai rien compris avec leurs histoire de CDC . . .)


... et pourtant !

 

l'utilisation d'un Device Context (le fameux CDC) est indispensable si tu souhaites effectuer le rendu d'un CBitmap. je vais pas m'étendre sur le sujet, je vais juste te renvoyer sur ce lien pour en apprendre davantage à ce sujet : http://msdn.microsoft.com/en-us/li [...] s.80).aspx

 

une fois que tu as compris le principe, tout coule de source :

Code :
  1. CString filename("C:\\myPicture.bmp" ); // chemin de ton fichier image
  2. HBITMAP hBmp = (HBITMAP)::LoadImage(NULL, filename, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION); // on créé un HBITMAP à partir de ce fichier
  3. CBitmap bmp; // on déclare un objet CBitmap, qui sera affiché dans ta fenêtre
  4. bmp.Attach(hBmp); // on initialise cet objet avec le HBITMAP précédent via la fonction Attach() qui permet de binder un HBITMAP à un CBitmap
  5.  
  6. CClientDC dc(this); // on récupère le Device Context de la fenêtre courante. C'est dans ce Device Context que le dessin va s'effectuer
  7. CDC bmDC; // on déclare un Device Context (classe CDC)
  8. bmDC.CreateCompatibleDC(&dc); // on créé un Device Context en mémoire compatible avec le Device Context de la fenêtre courante
  9. CBitmap *oldBmp = bmDC.SelectObject(&bmp);  // on affecte le CBitmap créé plus haut au Device Context créé, en sauvegardant l'ancien dans oldBmp
  10. BITMAP  bi;
  11. bmp.GetBitmap(&bi); // on récupère les données de ce CBitmap dans un BITMAP, pour pouvoir récupérer sa largeur et sa hauteur, nécessaires à la fonction BitBlt()
  12. dc.BitBlt(0,0,bi.bmWidth,bi.bmHeight,&bmDC,0,0,SRCCOPY); // et enfin on copie ce bitmap dans le Device Context de la fenêtre courante
  13. bmDC.SelectObject(oldBmp); // on restaure l'ancien CBitmap
 

Je te renvoie à la pierre angulaire de cette opération : la fonction BitBlt (http://msdn.microsoft.com/en-us/library/fcbk8779.aspx). Si tu arrives à comprendre comment fonctionne cette méthode, tout le code que je t'ai posté t'apparaitra limpide.

 


Message édité par Harkonnen le 15-01-2011 à 23:58:29

---------------
J'ai un string dans l'array (Paris Hilton)
n°2063415
Nlice
Posté le 14-03-2011 à 20:44:28  profilanswer
 

Merci beaucoup pour ton aide !
(Et désolé du retard ^^)
J'ai eu énormément de mal a comprendre comment fonctionne les CDC (franchement, minimum un mois, en tentant plein d'autres choses entre-deux)
J'ai (enfin) réussi grâce a la technique que tu m'as donnée, encore merci !


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

  Afficher un CBitmap

 

Sujets relatifs
afficher un lien dans un cadre avec dreamweaver[C] afficher un caractère grec
[java] Afficher une BufferedImage dans un Jframe ? Comment récupérer et afficher les données d'un formulaire html
Afficher une image :-(afficher une ligne d'un fichier .txt en C pur
Afficher le contenu sans recharger la page[Résolu] afficher répertoire windows en web
afficher valeur tableau echo' '[VC++] Comment afficher un fichier bmp dans un CBitmap
Plus de sujets relatifs à : Afficher un CBitmap


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