Comment afficher un BMP ?? [Visual C++] - C++ - Programmation
Marsh Posté le 16-05-2002 à 11:04:33
Avec la fonction LoadImage()
http://msdn.microsoft.com/library/ [...] e_9fhi.asp
Marsh Posté le 16-05-2002 à 11:07:10
Merci pour ta réponse mais j'arrive pas a l'utiliser !
Aurais tu un exemple car moi je rame !!
Merci d'avance !
Marsh Posté le 16-05-2002 à 11:17:05
Oui, bien sur
Accroche toi aux branches
Code :
|
Ce code ouvre une fenêtre et affiche l'image C:\Test.bmp dans cette fenêtre.
A+
[jfdsdjhfuetppo]--Message édité par Harkonnen le 16-05-2002 à 11:18:43--[/jfdsdjhfuetppo]
Marsh Posté le 16-05-2002 à 11:28:46
Harkonnen a écrit a écrit : Oui, bien sur Accroche toi aux branches [code] #include <windows.h> HBITMAP g_hBitmap; BITMAP g_bmp; LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { HDC hdc, hMemDC; PAINTSTRUCT ps; switch(msg) { case WM_CREATE: MessageBox( hwnd, "Une image C:\test.bmp doit exister.", "BMP Test", MB_OK ); g_hBitmap = LoadImage( NULL, "C:\\test.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE ); GetObject(g_hBitmap, sizeof(g_bmp), &g_bmp); return 0; case WM_PAINT: hdc = BeginPaint(hwnd, &ps); if(!hdc) return -1; hMemDC = CreateCompatibleDC(hdc); SelectObject(hMemDC, g_hBitmap); BitBlt( hdc, 0, 0, g_bmp.bmWidth, g_bmp.bmHeight, hMemDC, 0, 0, SRCCOPY ); EndPaint(hwnd, &ps); return 0; .... |
C'est moche de mettre ca dans un WM_PAINT
Marsh Posté le 16-05-2002 à 11:29:55
Willyzekid a écrit a écrit : C'est moche de mettre ca dans un WM_PAINT |
Dans quoi tu le mettrais ?
Marsh Posté le 16-05-2002 à 11:40:09
Je te remerci bien mais je doit etre mové car j'y arrive pas
Serai t-il possible d'avoir directement les .cpp et .h car moi je rame
Mon mail : bndelu@hotmail.com
Merci d'avance
[jfdsdjhfuetppo]--Message édité par fanta le 16-05-2002 à 11:40:28--[/jfdsdjhfuetppo]
Marsh Posté le 16-05-2002 à 11:41:44
Willyzekid , tu aurai une autre solution ????
Merci d'avance pour vos réponses
Marsh Posté le 16-05-2002 à 11:43:04
En fait, WM_PAINT et surtout les fonctions (BeginPaint et EndPaint) qui lui sont associés sont bonnes pour la plupart des applications mais dès que tu fais du graphisme, c'est plus le top (!?). J'ai remarqué que tout cela était bien trop lent (bien que nécessaire). En général, l'interaction avec Windows ralentie une application...
Donc dès que besoin de perf (assez rarement ), j'utilise:
HDC GetDC(HWND)
int ReleaseDC(HWND, HDC)
dans une fonction séparée...
J'ai vu ca dans les exemples de DirectX
Marsh Posté le 16-05-2002 à 11:43:43
comment ça t'y arrives pas ?
tu créé une image "test.bmp" sur C:\, tu créé un projet win32 application dans vc++, tu ajoutes un nouveau fichier source dans ce projet, tu fais un copier/coller de mon source dans ce fichier, puis tu fais F9 pour lancer la compilation...
et le seul .h c'est windows.h, fourni avec VC++
Marsh Posté le 16-05-2002 à 11:44:12
fanta a écrit a écrit : Je te remerci bien mais je doit etre mové car j'y arrive pas Serai t-il possible d'avoir directement les .cpp et .h car moi je rame Mon mail : bndelu@hotmail.com Merci d'avance |
heu...t'as déjà fait de la programmation windows ou tu débute?
Marsh Posté le 16-05-2002 à 11:45:57
Willyzekid a écrit a écrit : heu...t'as déjà fait de la programmation windows ou tu débute? |
Si tu débute, y a ce site :
http://www.winprog.org/tutorial/
Ca a l'air d'avancer pas à pas et y a de l'affichage de bitmap à la fin. Mais pour ca t'as besoin de connaitre un peu les bases.
Marsh Posté le 16-05-2002 à 11:47:03
Willyzekid a écrit a écrit : Donc dès que besoin de perf (assez rarement ), j'utilise: HDC GetDC(HWND) int ReleaseDC(HWND, HDC) dans une fonction séparée... J'ai vu ca dans les exemples de DirectX |
De toute façon, j'utilise jamais le GDI pour afficher des images, c'est bien trop lent, je passe par DirectDraw (Ou DirectGraphics)
Mais bon, vu son niveau, je vais pas le lancer dans DirectX...
Marsh Posté le 16-05-2002 à 13:08:27
Encore merci pour vos réponse !
En fait le programme marche tout seul dans un nouveau projet.
Mais l'utilisation que je ve en faire c de l'integrer dans mon projet existant qui est une application MFC.
En fait je fé de la stéganographie et je voulais afficher l'image d'origine et le résultat avec les informations stokées dedans.
Le fait ke cela m'ouvre une autre Boite de dialoque ne me dérange pas.
Comment transformer le code pour en faire une fonction.
car la si je copie/colle le contenu du .c dans ma fonction il genere des erreurs de hInst et hWnd
Merci en tout cas pour vos conseils !
Marsh Posté le 16-05-2002 à 10:55:08
Bonjour,
Je cherche depuis quelques jours le moyen d'afficher sous Visual C++ 6.0 d'afficher un BMP en passant en parametre son path (ce n'est donc pas une ressource).
Je précise que je débute et que des explications me serais les bienvenues !!!
Merci d'avance