calimero63110
Messages postés33Date d'inscriptionsamedi 26 mars 2005StatutMembreDernière intervention14 décembre 2008
-
31 août 2008 à 20:56
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
1 sept. 2008 à 11:55
Bonjour :)
Je cherche depuis quelques jours un moyen de rendre transparente une picturebox suivant un certain % d'opacitée, afin de voir la form, les controles, et l'interface présente dessous. J'avais trouvé un tres bon code, seulement il ne permettait que de fusionner deux images pour leur appliquer un % d'opacité.
Or sous la picturebox sera affiché des surfaces en DirectX 7 ( 2D ), et il est impossible d'obtenir cette surface dans une picturebox reelement ( à moins d'utiliser la fonction pour coller la surface dans une picturebox, qui prend plus ou moins 15ms, trop long ).
Je cherche donc une vraie méthode, simple, et non un bidouillage pour qu'une picturebox soit transparente, sous un certain niveau d'opacité ( le contenu sous la form doit être raffrachi 21fois par secondes, sans prendre plus de quelques ms ).
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 1 sept. 2008 à 10:59
on revient au point de départ ^^
dans ce cas fais toi juste une anim flash avec fond transparent, qui passe un claque blanc alpha de 20 à 120 par exemple, ou fixe, puis affiche juste ton anim dans une shockwave
tu as pas mal de pistes. le reste c'est de la recherche et des essais. concrêtement tu en es où niveau code?
jeter un oeil oui mais j'ai pas le temps de te faire un compo... surtout si au final c'est pas utile
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 31 août 2008 à 21:39
salut,
nativement tu ne peux pas.
donc pas le choix, en plus avec %age, c'est du code
la bidouille (que tu ne veux pas) serait de détacher la picture du parent (par code) et alors de l'altérer par setlayered...
cette solution est plus propre qu'il n'y paraît, et est la plus simple à mettre en oeuvre
çà se complique si le parent se déplace
sinon tu dois jouer avec une capture du fond, ou que le moteur directx renvoie lui-même l'aperçu en cours
ensuite travailler sur cet aperçu pour le "rendre transparent". cette méthode sera néanmoins plus longue et tu risques d'avoir un scintillement
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
calimero63110
Messages postés33Date d'inscriptionsamedi 26 mars 2005StatutMembreDernière intervention14 décembre 2008 1 sept. 2008 à 08:32
Merci tout d'abord de ta réponse.
Je me doutais d'une reponse comme celle ci allait arriver... Mais qui ne tente rien n'as rien...
Je rajoute donc deux questions, est-ce que la technique est compatible avec windows 98 ?
Y aurait-il moyen de le faire en direct X ( pas forcement rendre transparente une deuxieme image ^^ ).
J'ai une surface dd_backbuffer ^^ qui contiens tout l'affichage du jeu, imprimé ensuite sur la couche principal. Je souhaite, si possible la modifier pour obtenir un rendu comme ceux-ci ( réalisés avec un autre code, ralentissant le jeu ) :
calimero63110
Messages postés33Date d'inscriptionsamedi 26 mars 2005StatutMembreDernière intervention14 décembre 2008 1 sept. 2008 à 08:34
Oups, pas moyen d'éditer, j'ai fait une faute :
J'ai une surface dd_backbuffer ^^ qui contiens tout l'affichage du jeu,
imprimé ensuite sur la picturebox principale. Je souhaite, si possible la
modifier ( la surface ) pour obtenir un rendu comme ceux-ci ( réalisés avec un autre
code, ralentissant le jeu ) :
Vous n’avez pas trouvé la réponse que vous recherchez ?
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 1 sept. 2008 à 08:53
est-ce que la technique est compatible avec windows 98
pas avec SetLayeredWindowAttributes non. par contre par code avec GetDIBits et SetDIBits par exemple, oui
Y aurait-il moyen de le faire en direct X sans doute mais là faut pas compter sur moi ^^
lors de ton filtre/fondu (comme sur les captures), le jeu continue à être en mouvement derrière? ou c'est une étape en pause...
en mouvement çà va consommer énormément de ressources à cause de la fréquence de rafraichissement, mais ce que tu veux faire est tout à fait possible.
peut-être aussi possible de tricher un peu en travaillant sur ton image "réduite", puis stretch après le fondu... si çà ne pixélise pas trop
pour les DIB tu peux aussi jeter un oeil aux sources de DarkSidious dont une fait précisément ce que tu recherches
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
calimero63110
Messages postés33Date d'inscriptionsamedi 26 mars 2005StatutMembreDernière intervention14 décembre 2008 1 sept. 2008 à 09:04
Serait-il possible que tu m'adapte le code proprement, pour éviter toute perte de ressources ?
Si non, pourrais-tu m'indiquer où trouver les infos qu'il me faut pour realiser moi même ( moi et les bibliotheques ça fait deux, et je n'ai trouvé aucun tuto )...
ensuite si besoin on t'aidera ;)
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
calimero63110
Messages postés33Date d'inscriptionsamedi 26 mars 2005StatutMembreDernière intervention14 décembre 2008 1 sept. 2008 à 09:38
Merci, j'avais déja consulté cette source ( enfin une source du genre ). Le probleme est qu'il faut réaliser une copie du DD_backbuffer sur une picturebox ( soit 900x900 pixels a copier ). Le jeu nécessite un raffraichissement de 21FPS, et le temps nécessaire a cette copie était trop important. 15ms environ ( sachat qu'il s'execute toute les 50ms c'est trop, il n'y a plus le temps pour le reste du programme ).
C'est pour cela que je demandais une technique qui ne créais pas une simulation de picturebox transparente, je veux une vraie picturebox transparente ( qui soit fait avec un bidouillage ou non ), par dessus ma picturebox principale qui contiens la surface DD_BackBuffer.
calimero63110
Messages postés33Date d'inscriptionsamedi 26 mars 2005StatutMembreDernière intervention14 décembre 2008 1 sept. 2008 à 11:11
tu as pas mal de pistes. le reste c'est de la recherche et des essais. concrêtement tu en es où niveau code?
jeter un oeil oui mais j'ai pas le temps de te faire un compo... surtout si au final c'est pas utile
De toute façon, c'est clair que si la technique est simple, je preferais le faire moi même. Seulement le controle shockwave est opaque non ? quelque soit la transparence de l'annimation placée par dessus??
Pour ton info le jeu est en Bêta actuellement, client / serveur (a peu pres) fonctionnels :)