Tom's Guide > Forum > Programmation > Afficher une image en C++
Mot :    Pseudo :           
 

Bonjour, je me suis mis au C++ et en ait compri les bases, et maintenant, je désirerai fait un ptit programme simple de calculette. Je vodrai afficher une image mais je ne sais absolument pas comment faire.
En basic, il y avais un Loadbmp et je voulais savoir s'il n'existait pas un truc de ce genre en C++. Sinon, quel est le moyen d'afficher une image please?
Voila, et merci d'avoir lu mon post.

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Quelles bibliothèques utilises tu ?

Répondre à flakdo

Heu, comme je l'est dit, je suis débutant, et justement, je voudrai avoir comment faire te donc, si sa va avec, quelles bibliothèque utilisé? Est-ce une bibliothèque standard qui est dans dev-C++?
Pour les pit truc console que j'ai fait jusqu'à maintenant, j'ai fait un

Code :
  1. # include <iostream>

de la librérie standars du C++ donc...

Répondre à Exedor@IDN

pour pouvoir afficher une image, il te faut une bibliothque spécifique genre allegro ou sdl. comment ça s'installe ? sous devc++ c'est super simple outils > nouvelles versions > tu te connectes au devpak et tu télécharges la bibliothèque que tu souhaites installer

Répondre à khayyam

Voici un code que j'ai trouve je ne sais plus ou, qui doit repondre a ta question.
#include <windows.h>
#include <iostream>

using namespace std;


LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static CHAR szAppName[] ="Salut" ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;


wndclass.style = 0;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;

if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("Problème!" ),szAppName, MB_ICONERROR) ;
return 0 ;
}

hwnd = CreateWindow (szAppName, // nom de la classe
"", // titre de la fenêtre
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU
| WS_MINIMIZEBOX | WS_VISIBLE ,// style de la fenêtre
CW_USEDEFAULT, // position initiale en x
CW_USEDEFAULT, // position initiale en y
600, // largeur initiale
500, // hauteur initiale
NULL, // handle de la fenêtre mère
NULL, // handle du menu de la fenêtre
hInstance, // handle de l'instance
NULL) ; // paramètres de création

ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;

while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;

}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HBITMAP hbitmap; // pour le bitmap

switch (message)
{

case WM_PAINT:
HDC hdc;HDC hdcMemory;
PAINTSTRUCT ps;
hdc=BeginPaint(hwnd,&ps); // obtient un handle de contexte de périphérique



BITMAP bm;
hbitmap=(HBITMAP) LoadImage(NULL,"image.bmp",IMAGE_BITMAP,0,
0,LR_LOADFROMFILE);
hdcMemory=CreateCompatibleDC(NULL);
SelectObject(hdcMemory,hbitmap);
GetObject(hbitmap,sizeof(bm),&bm);

BitBlt(hdc,0,0,bm.bmWidth,bm.bmHeight,hdcMemory,0,0,SRCCOPY);

DeleteDC(hdcMemory);



EndPaint(hwnd,&ps); // libère un handle de contexte de périphérique
return 0;

case WM_DESTROY:
DeleteObject(hbitmap);
PostQuitMessage (0) ;
return 0 ;


}

return DefWindowProc (hwnd, message, wParam, lParam);

}


Il a un defaut ,c'est que je commence par creer une fenetre dont je fixe les dimensions a priori (600*500pixels), puis j'y place l'image a afficher,alors qu'il serait preferable de lui donner les
dimensions de l'image. je n'ai pas reussi à regler ce probleme.
j'ai place le fichier image.bmp a afficher dans le repertoire devc++.

Répondre à ropars
Tom's Guide > Forum > Programmation > Afficher une image en C++
Aller à :

Il y a 1482 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens