Je fait actuellement un programme qui =E0 pour but d'afficher plusieurs
bitmaps constamment en mouvement et ayant =E0 la fois une couleur
transparente et =E0 la fois =EAtre semi-transparente.Pour g=E9rer la
transparence j'ai donc cr=E9er une fonction qui permet de rendre les
couleurs d'une image transparente par rapport au DC courant:
HBITMAP CouleurTransparente(HDC Src,HDC Dest,int Dx,int Dy,int Sx,int
Sy,COLORREF couleur)
{
for (int x =3D 0;x < Sx ;x++)
{
for (int y =3D 0;y < Sy;y++)
{
COLORREF clr =3D GetPixel(Src,x,y);
COLORREF tp =3D GetPixel(Dest,Dx+x,Dy+y);
if (clr =3D=3D couleur) SetPixel(Src,x,y,tp);
}
}
return CreateCompatibleBitmap(dc,cx,cy);
}
Seulement, cette fonction est un peu lente et je doit l'utiliser une
dizaine de fois par seconde ce qui ralentie =E9norm=E9ment le programme.
Je voudrais donc que quelqu'un puisse me donner une fonction
d'affichage rapide qui prend en compte l'affichage d'une image avec au
moins une couleur transparente comme la fonction "TransparentBlt" ET
l'affichage de l'image en semi-transparence comme le fait la fonction
"AlphaBlend".
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Christian ASTOR
riked wrote:
Seulement, cette fonction est un peu lente et je doit l'utiliser une dizaine de fois par seconde ce qui ralentie énormément le programme.
Je voudrais donc que quelqu'un puisse me donner une fonction d'affichage rapide qui prend en compte l'affichage d'une image avec au moins une couleur transparente comme la fonction "TransparentBlt" ET l'affichage de l'image en semi-transparence comme le fait la fonction "AlphaBlend".
Oui, il ne faut pas utiliser GetPixel() qui est très lent. Tu peux utiliser une DIB Section à la place. Un exemple que j'avais posté qui change les pixels noirs en rouge => http://groups.google.com/group/comp.os.ms-windows.programmer.win32/msg/b448007b5a3949eb
ou avec les ImageLists : par ex, ceci affiche le logo de l'OS avec le blanc pour couleur transparente et en "Blend" =>
Seulement, cette fonction est un peu lente et je doit l'utiliser une
dizaine de fois par seconde ce qui ralentie énormément le programme.
Je voudrais donc que quelqu'un puisse me donner une fonction
d'affichage rapide qui prend en compte l'affichage d'une image avec au
moins une couleur transparente comme la fonction "TransparentBlt" ET
l'affichage de l'image en semi-transparence comme le fait la fonction
"AlphaBlend".
Oui, il ne faut pas utiliser GetPixel() qui est très lent.
Tu peux utiliser une DIB Section à la place.
Un exemple que j'avais posté qui change les pixels noirs en rouge =>
http://groups.google.com/group/comp.os.ms-windows.programmer.win32/msg/b448007b5a3949eb
ou avec les ImageLists : par ex, ceci affiche le logo de l'OS avec le
blanc pour couleur transparente et en "Blend" =>
Seulement, cette fonction est un peu lente et je doit l'utiliser une dizaine de fois par seconde ce qui ralentie énormément le programme.
Je voudrais donc que quelqu'un puisse me donner une fonction d'affichage rapide qui prend en compte l'affichage d'une image avec au moins une couleur transparente comme la fonction "TransparentBlt" ET l'affichage de l'image en semi-transparence comme le fait la fonction "AlphaBlend".
Oui, il ne faut pas utiliser GetPixel() qui est très lent. Tu peux utiliser une DIB Section à la place. Un exemple que j'avais posté qui change les pixels noirs en rouge => http://groups.google.com/group/comp.os.ms-windows.programmer.win32/msg/b448007b5a3949eb
ou avec les ImageLists : par ex, ceci affiche le logo de l'OS avec le blanc pour couleur transparente et en "Blend" =>
Merci de cette réponse très rapide.Je pense que je vais plutôt utiliser les DIB Sections qui me semble le mieux correspondre à mon problème. Si j'ai encore un problème d'affichage, je viendrais le dire ici.
Merci de cette réponse très rapide.Je pense que je vais plutôt
utiliser les DIB Sections qui me semble le mieux correspondre à mon
problème.
Si j'ai encore un problème d'affichage, je viendrais le dire ici.
Merci de cette réponse très rapide.Je pense que je vais plutôt utiliser les DIB Sections qui me semble le mieux correspondre à mon problème. Si j'ai encore un problème d'affichage, je viendrais le dire ici.