Image avec Transparence

Kebims78 Messages postés 12 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 12 août 2009 - 30 mai 2007 à 16:02
lectpe Messages postés 162 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 17 juillet 2010 - 24 août 2009 à 16:14
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

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

Loki
0
Kebims78 Messages postés 12 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 12 août 2009
30 mai 2007 à 18:41
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.
0
Loki6 Messages postés 286 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 27 décembre 2009 2
30 mai 2007 à 20:10
c'est une image 24 bits ?

Loki
0
Kebims78 Messages postés 12 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 12 août 2009
30 mai 2007 à 21:47
Non, une 16 couleurs.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Loki6 Messages postés 286 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 27 décembre 2009 2
30 mai 2007 à 22:32
et tu spécifies quelle couleur doit représenter le transparent ?

Loki
0
Kebims78 Messages postés 12 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 12 août 2009
31 mai 2007 à 10:50
Je l'ai dit dans mon premier poste, la couleur Magenta. RGB(255,0,255)
0
Loki6 Messages postés 286 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 27 décembre 2009 2
31 mai 2007 à 11:51
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
0
Kebims78 Messages postés 12 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 12 août 2009
31 mai 2007 à 18:47
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.
0
Loki6 Messages postés 286 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 27 décembre 2009 2
31 mai 2007 à 20:25
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
0
lectpe Messages postés 162 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 17 juillet 2010 3
24 août 2009 à 16:14
Salut.

Il faut utiliser la fonction TransparentBlt.

Cordialement,

Grégory.
0