HBITMAP avec transparence

CyberP Messages postés 283 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 4 juillet 2007 - 21 avril 2004 à 10:41
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 22 avril 2004 à 23:13
Est ce que quelqu'un sait mettre en transparence une couleur d'un HBITMAP (en l'occurence RGB(255,0,255)) ?

J'ai cherché une demi heure dans le MSDN sans succès... (en tout cas rien pour une simple bitmap)

CyberP,
Celui qui dit que toute question a une réponse

25 réponses

CyberP Messages postés 283 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 4 juillet 2007 2
22 avril 2004 à 16:09
En fait c'était tout simple !

Il suffit de reprendre le code de ymca2003 et de remplacer StretchBlt par TransparentBlt ! TransparentBlt redimensionne en même temps !

CyberP,
Celui qui dit que toute question a une réponse
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
22 avril 2004 à 16:17
Oui, sauf que, comme je te l'ai dit, TransparentBlt n'est pas compatible avec Windows 95/98/NT4 ! Donc, si tu compte déployer ton appli sous ses systèmes, ca ne marcheras pas !
DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0
CyberP Messages postés 283 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 4 juillet 2007 2
22 avril 2004 à 16:45
Euh ca m'étonnerait qu'il y ait beaucoup de monde qui a encore 95/98/NT4

CyberP,
Celui qui dit que toute question a une réponse
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
22 avril 2004 à 23:11
petite explication sur :
dwWidthBytes = 4*((3*info.bmWidth+3)/4);

dans l'exemple que j'avais donné, il y avais 24 bits par pixels soit 3 octets, donc pour savoir la taille en octet d'une ligne il suffit de faire :
3*info.bmWidth
mais dwWidthBytes doit être un multiple de 4, donc pour cela il y a plusieur possibilité :
1) tester le reste de la divsion par 4 et ajouter 1 si non nul :
dwWidthBytes = 3*info.bmWidth;
if(dwWidthBytes%4 !=0)
dwWidthBytes++;
2) réaliser la petite astuce du dessus (donne le même résultat)
0

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

Posez votre question
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
22 avril 2004 à 23:13
petite explication sur :
dwWidthBytes = 4*((3*info.bmWidth+3)/4);

dans l'exemple que j'avais donné, il y avais 24 bits par pixels soit 3 octets, donc pour savoir la taille en octet d'une ligne il suffit de faire :
3*info.bmWidth
mais dwWidthBytes doit être un multiple de 4, donc pour cela il y a plusieur possibilité :
1) tester le reste de la divsion par 4 et ajouter 1 si non nul :
dwWidthBytes = 3*info.bmWidth;
if(dwWidthBytes%4 !=0)
dwWidthBytes++;
2) réaliser la petite astuce du dessus (donne le même résultat)
0
Rejoignez-nous