Dessiner un Rectangle

SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013 - 22 août 2004 à 18:29
SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013 - 24 août 2004 à 18:24
bonjour tout le monde, vla le probleme :


HBITMAP hbmp = (HBITMAP)LoadImage(0,"c:\\logo.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
HDC hdc;
hdc = GetWindowDC(winname);
HDC hdc2;

BITMAP bmp; 
GetObject(hbmp, sizeof(BITMAP), (LPSTR)&bmp);
HDC hdcBmp; 
hdcBmp = CreateCompatibleDC(hdc); 
SelectObject(hdcBmp, hbmp);
BitBlt(hdc,0,0, bmp.bmWidth,bmp.bmHeight, hdcBmp, 0,0, SRCCOPY);

ExtFloodFill(hdc, 20, 20, RGB(106, 100, 0),FLOODFILLBORDER);

DeleteDC(hdc);
DeleteDC(hdcBmp);



Voila en fait mon probleme c'est que l image s 'affiche bien, un rectangle apparait bien dessus et l efface mais il é tjour de la couleur du fond de la fenetre ( ????)

En fait je chercherais un moyen d 'afficher des rectangle ( c pour un spectre dans un lecteur mp3) de maniere aussi peu gourmande en ressource possible ( Bitblit marche mais je sé po si c le mieux, ya aussi CreatePen mais celle la je la connais pas du tout )

2 réponses

cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
24 août 2004 à 08:30
Et pourquoi pas utiliser l'API Rectangle ?

de plus ton code risque de créer une fuite dans les ressource GDI a cause de cette ligne :

SelectObject(hdcBmp, hbmp);

car select object te renvoi l'ancienne bitmap contenue dans le dc qui doit etre restauré apres utilisation pour etre libéré convenablement

@+

E.B.
0
SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013
24 août 2004 à 18:24
C ce que g fait finallment avec CreateSolidBrush et comme ca marche mais par contre la tu me fait cogiter paske je voit po trop ou est la fuite !!
Je pensais que DeleteDC(hdcBmp); suffisait !!!
Je comprend pas trop ce que tu veut dire mais est ce que

hOldObj=SelectObject(hdcBmp, hbmp);

puis SelectObject(hdc, hOldObj); just avant les deleteObject resoudrais le probleme ?????
0
Rejoignez-nous