Image avec Transparence

Signaler
Messages postés
12
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
12 août 2009
-
Messages postés
162
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
17 juillet 2010
-
Bonjour,
J'ai un petit problème pour afficher une image avec la transparence.
En ressource, j'ai une image avec en violet ( RGB(255,0,255) ) la couleur de transparence.
Je souhaiterai prendre une zone de cette image et l'afficher sur une fenêtre.
Je travaille en C sous Visual C++ 6.
Merci

10 réponses

Messages postés
286
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
27 décembre 2009
2
salut, un début de code peut-etre ?

Loki
Messages postés
12
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
12 août 2009

J'ai une solution mais qui ne marche pas avec les transparence.

    HDC hDC;
    HBITMAP hBmp;
    hDC=GetDC(hDlgMain);
    hBmp=(HBITMAP)LoadImage(hInst,(LPCTSTR)IDB_LEDS,IMAGE_BITMAP,0,0,LR_LOADTRANSPARENT);
    DrawState(hDC,NULL,NULL,(LPARAM)hBmp,(WPARAM)NULL,600,50,LED_SIZE,LED_SIZE,DST_BITMAP);
    DeleteObject(hBmp);
    ReleaseDC(hDlgMain,hDC);

Le problème est que la couleur de transparence devient blanche.
Messages postés
286
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
27 décembre 2009
2
c'est une image 24 bits ?

Loki
Messages postés
12
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
12 août 2009

Non, une 16 couleurs.
Messages postés
286
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
27 décembre 2009
2
et tu spécifies quelle couleur doit représenter le transparent ?

Loki
Messages postés
12
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
12 août 2009

Je l'ai dit dans mon premier poste, la couleur Magenta. RGB(255,0,255)
Messages postés
286
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
27 décembre 2009
2
ouais je sais, mais je veux dire dans ta fonction LoadImage() : tu as lu la définition de LR_LOADTRANSPARENT ?

LR_LOADTRANSPARENT
Retrieves the color value of the first pixel in the image and replaces the corresponding entry in the color table with the default window color (COLOR_WINDOW). All pixels in the image that use that entry become the default window color. This value applies only to images that have corresponding color tables.

Do not use this option if you are loading a bitmap with a color depth greater than 8 bpp.

- est ce que ton premier pixel est magenta ?
- ta couleur COLOR_WINDOW correspond elle à ce que tu attends ?
- ta couleur de transparence est elle en 8bpp ?

Loki
Messages postés
12
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
12 août 2009

Le problème n'est pas dans le LoadImage, comme le premier est Magenta, il applique la transparence et lme transforme le magenta en blanc. Donc le DrawState va m'afficher l'image avec du blanc a la place du magenta.
Messages postés
286
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
27 décembre 2009
2
et donc tu souhaites une autre couleur que le blanc pour ton transparent. peut-être en redéfinissant COLOR_WINDOW ? je ne sais pas désolé.

Loki
Messages postés
162
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
17 juillet 2010
3
Salut.

Il faut utiliser la fonction TransparentBlt.

Cordialement,

Grégory.