begin process at 2012 05 29 05:46:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Autre

 > 

Fade In Fade Out GDI


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Fade In Fade Out GDI

mercredi 21 juin 2006 à 21:05:39 | Fade In Fade Out GDI

bbear

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!

merci
mercredi 21 juin 2006 à 22:01:28 | Re : Fade In Fade Out GDI

24Karas

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

++
24K
mercredi 21 juin 2006 à 22:42:32 | Re : Fade In Fade Out GDI

bbear

ha oui, tiens... j'essaierai ça
malgré tout, il doit etre possible de faire quelque chose avec animatepalette, mais c'est pas simple

jeudi 22 juin 2006 à 10:47:35 | Re : Fade In Fade Out GDI

bbear

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
vendredi 18 août 2006 à 14:26:44 | Re : Fade In Fade Out GDI

bbear

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++)

samedi 19 août 2006 à 03:33:36 | Re : Fade In Fade Out GDI

24Karas

j'ai quasi réussi à faire les anciens effets!
=> ah tiens au passage, comment tu fais des rasters sous win, ça m'interesse ;-)
samedi 19 août 2006 à 14:08:35 | Re : Fade In Fade Out GDI

bbear

ç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.
samedi 19 août 2006 à 14:09:31 | Re : Fade In Fade Out GDI

bbear

en tout cas ça repond pas à ma question... bouh...


Cette discussion est classée dans : gdi, couleurs, exemple, in, fade


Répondre à ce message

Sujets en rapport avec ce message

Effet Fade In / Fade Out sous DirectDraw 7 [ par ProGamer ] J'ai besoin de faire cet effet sous DD7. J'ai vu une méthode qui utilise le Gamma Ramp, mais il se trouve que le Gamma Ramp dépend du matériel. y'a-t- Lumières, couleurs, matériaux, normals ... [ par fabienGL ] Bonjour je vous écris car j'écris en OpenGL, tout va bi1 mais je me pose un petit problème pour éditer la couleur de la matière (diffuse, ambiante, sp Fonction atoi [ par LordBob ] Salut, en fait je voudrai savoir si la fonction atoi permet bien de transformé une chaine de caractere entré par un utilisateur par exemple en son eq c++ : pb avec une fonction extern C [ par nanch07 ] J'expose tout, voilà: dans une de mes classes je fais appel à une fonction externe en C ( de numerical recipes in C). Mais j'ai également besoin de ce Créer une palette personalisée de 256 couleurs (couleurs sur 8 bits) [ par orus8 ] Mon projet consiste en la quantification d'une image de 16 milions de couleurs en une image en 256 niveaux de couleurs (et non 256 niveaux de gris). L Open Image file in MFC [ par kais ] Comment je peux ouvrir une image dans application avec menu et boite de dialogue Si c'est possible une image TIFF MERCI CA VA TRÈs MAL ! ressource gdi [ par michelmt ] j'ai fais un programme qui sert a comptécombien de pièce je peut entré dans une feuille de stratifieril me dessine les grandes feuilles puis y insertl comment decompiler in executable DOS ? [ par yanlyon ] envoyer moi de cquoi decompiler un exe sous dos info@yannsavoye.Com comment lancer une impression [ par marcdelavaud ] je voudrais lancer une impression(un fichier tiff par exemple) sur une imprimante en reseau via un code C ou C++ sous visual c++si vous aviez un exemp probléme d'écriture fichier [ par phoenixadb ] phoenixadbJ'ai un problème sur une fonction que je n'arrive pas à résoudremon nom de fichier est test.txtet ma fonction:void ecriturefichier(char* nom


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales