cs_bbear
Messages postés92Date d'inscriptionjeudi 24 novembre 2005StatutMembreDernière intervention29 mai 2008
-
21 juin 2006 à 21:05
cs_bbear
Messages postés92Date d'inscriptionjeudi 24 novembre 2005StatutMembreDernière intervention29 mai 2008
-
19 août 2006 à 14:09
salut
je voulais m'attaquer à une routine de fading in/out
mais j'ai un probleme de lenteur.
j'ai utilisé
1. la technique : pixel par pixel en recuperant la couleur...ça passe bien pour de petite surface
2. l'alphablending avec une image noire... idem
sur une surface de 700x400 ça rame.
j'ai verifié, et en tout ma surface ne comporte pas plus de 40 couleurs utilisées.
je me demandais si il etait possible de faire comme au bon vieux temps (sur Amiga par exemple) en s'attaquant directement à la palette de couleurs.
j'ai trouvé un exemple sur codeguru : http://www.codeguru.com/cpp/g-m/bitmap/specialeffects/article.php/c1717/
mais je n'arrive pas à l'utiliser.
je comprends le principe de AnimatePalette (je l'ai testé avec une palette perso sur un graphe gdi)
et la fonction CreateReservedPalette fournit.
par contre comment modifier FadeIn/FadeOut pour qu'elle fonctionne dans une boucle PAINT ou TIMER ?
comment l'appliquer à l'ecran en cours ?
y-a-t-il plus simple ?
comment cela fonctionne-t-il avec plus de 236 couleurs (limite de cet exemple) ?
j'arrive à faire pas mal de chose avec le simple GDI, mais je bloque sur le fading!
24Karas
Messages postés233Date d'inscriptionjeudi 4 juillet 2002StatutMembreDernière intervention 5 juillet 2008 21 juin 2006 à 22:01
je pense que tu dois pouvoir faire comme ça :
init :
- DC1 avec l'image
- DC2 avec un rectangle noir
dans ton timer :
- tu blit DC1 sur ecran
- tu blit DC2 sur ecran avec un AND ou OR, enfin faut cherche le masque du blit qui convient pour faire ça. (dernier param de bitblt)
- tu reinit pour le prochain passage :
- tu changes la couleur de ton DC2 (en le faisant se rapprocher du blanc de plus en plus 0x0000000 -> 0xFFFFFF. ça doit etre faisable avec une brush que tu fais varier et l'instruction rectangle)
pour faire l'inverse tu pars d'un rectangle blanc et tu vas vers le noir
cs_bbear
Messages postés92Date d'inscriptionjeudi 24 novembre 2005StatutMembreDernière intervention29 mai 2008 22 juin 2006 à 10:47
l'idée du rectangle noir avec blit et mask c'est ce que j'ai fais mais avec la fonction AlphaBlend() et c'est lent. et j'ai pas trouvé de combinaison rastop pour faire ça.
si quelqu'un dans la salle a reussi à utiliser AnimatePalette pour du fading
merci
cs_bbear
Messages postés92Date d'inscriptionjeudi 24 novembre 2005StatutMembreDernière intervention29 mai 2008 18 août 2006 à 14:26
UP
peut on faire un fading noir=>palette image/palette=>noir avec le GDI en utilisant SetDIBitsToDevice ? est-ce possible sans que ça rame ? est-ce possible avec une image 16 couleurs mais sur un bitmap créé en 24 bits ?
boudiou, un truc aussi simple qu'un fading facile à faire en assembleur sur Amiga, c'est l'enfer sur win !! alors que j'ai quasi réussi à faire les anciens effets!
alors si une âme charitable a reussi, sans passer par direct/opengl
ou sinon, comment faire en OpenGl ou Direct2D avec un exemple simple d'utilisation (C si possible, pas c++)
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_bbear
Messages postés92Date d'inscriptionjeudi 24 novembre 2005StatutMembreDernière intervention29 mai 2008 19 août 2006 à 14:08
ça depend de l'effet
- un roller raster ("rouleaux de lumiere") je le fais avec *(framebuf+x+y*width)=RGB(col.r,col.g,col.b) en utilisant un tableau de couleurs et en les decalant à gauche ou à droite
on obtient soit 1 ligne raster soit 2 "rouleaux" avec 12 lignes (selon le nombre de couleurs)
- des barres de copper, avec un fonction draw_copper(rect* r,int add) qui dessine la barre avec FillRect(hdc,r,brush), brush=createsolidbrush(RGB(copper[i].r,copper[i].g,copper[i].b)) avec i (0-15), et copper[] un tableau de couleurs de chaque ligne (16 lignes de degradé)
faudrait que je remetter au propre mon intro multi effets, je peux pas poster ça comme ça.