Icône semi transparente sur une feuille transparente
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 2009
-
28 juil. 2004 à 19:23
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013
-
1 août 2004 à 07:04
Bonjour tout le monde!
Là g un petit blème! En fait, je fais une barre d'outils Windows très jolie, du moins j'essaye.
J'explique: La barre de menu est en fait composé ke d'icones, le fond de la barre est donc transparent (mais pas forcément, on peut kand-meme afficher un fond semi-transparent). Lorsque le menu est affiché, c comme si il y avait des icones alligné sur le bureau (en haut). Sauf ke les icones de mon menu sans semi-transparente et alway on top (elle devienne completement opaque lorsque on va dessus avec le curseur). J'utilise un mode d'apparition par slide (viens de l'extérieur de l'écran) ou par transparence (en fait c comme dans win XP, avec les menu). Chaque icone est en fait une nouvelle feuille VB, sur lakelle je dessine l'icone puis j'applique la transparence avec la fonction SetLayeredWindowAttributes. G ajouter des option comme: Vitesse et mode d'apparition, transparence des icone lorsque elle ne sont pas sélectionnées, chemin du dossier contenants les dossier et raccourcis à afficher dans la barre, démarrer ou non avec Windows, Délais avant de faire disparaitre la barre, et transparence du fond de la barre (ke je mets à 0, c plus joli sans fond)
Bref, voici donc ma barre, mais le problème: Chaque icone est dessiné sur la form qui a une couleur de fond, et donc cette couleur de fond forme un carré uni autour de l'icone (même si il est semi-transparent, évidemment). G bien essayer de skinner chaque form contenant une icône, mais non seulement c assez lent, mais en plus ca laisse des bord blanc aux icônes. Ce bord blanc provient de la transparence de l'iône (alpha-blend), ki va donc créer un dégradé entre la couleur de l'icône et le fond uni (blanc dans mon cas). (essayer donc de créer un fond transparent sur une jpg, c la meme chose). J'utilise la fonction ExtractAssociatedIcon et DrawIcon pour extraire et dessiner l'icône associé au dossier ou au raccourcis....
En tout cas, comme ca ca le fait pas! Alors si qqun pouvais me donner qq renseignement, ou mieux, un exemple, ca serait franchement le bienvenu....
En gros, ce ke je veux, c afficher une icone qqpart à l'écran, tout en utilisant l'alpha-blend de celle-ci... comme si elle était sur le bureau, mais on-top, et ke je puisse la controler depuis mon prog... voilà koi
Merci d'avance a toutes vos réponses!
PS. Une solution serait de dessiner l'icone sans alpha-blend, ca permettrait de la skinner correctement.. !?!?
A voir également:
Icône semi transparente sur une feuille transparente
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 29 juil. 2004 à 07:07
Tu peux essayer de donner un effet de transparence en appliquant une fusion entre ton image et le fond de ta form, bien que je ne sois pas sûr qu'il est possible de récupèrer le fond semi-transparent d'une feuille...
Va voir ma source Fusion immédiate de 2 images pour avoir un algorithme très rapide pour faire cà.
DarK Sidious
[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 1 août 2004 à 02:44
> liquide
C possible pour Transparentblt, ca efface une couleur données, mais ca n'empeche pas le problème de la transparence des icone... (le dégradé entre l'icone et la couleur de fond restera visible). Et pour les forme, ben moi j'en affiche 18 et c assez rapide, pas instantanée mais ca va. (Athlon XP 1900+ 512Mb). Mais au premier affichage le temps est nettement plus lent, après elle sont en cache. Surtout ke a chaque nouvel affichage, je lis les fichiers sur le HD, j'extracte leur icône (pour les dossier aussi) et je l'affiche sur une nouvelle forme. A la fin j'applique la transparence et j'affiche... Donc je mémorise ke dalle, je relis le HD a chaque fois, histoire de détecter les changement dans les raccourcis sans devoir redémarrer l'applic... Et avec tout ca, c suffisament rapide...
> DARKSIDIOUS
Si tu récupère le fond de ta forme, tu vois ke le fond de ta forme, et pas ce ki est derriere et ki est visible grace à la transparence.. donc juste une couleur unie...
Mais la solution serait de faire une capture de l'écran, et de l'appliquer en fond pour chaque icone..... et donc de la mettre a jour a chaque mouvement de chaque icone lorsque celles-ci apparaissent par glissement de l'extérieur de l'écran... ca risque de donner pas génial (lent, scintillements), mais ca vaut la peine d'essayer...
Et en mode d'apparition par transparence, ca peut le faire ouais... Ya juste ke ca ajoute encore pas mal d'action pour afficher les icone (capture d'écran, application de la partie correspondante a chaque icone), ca risque de rallentir l'affichage de la barre...
Non mais je crois ke c'est la solution... je peut tjr mettre d truc en cache si ca devient trop lent.. La structure des dossiers et fichiers ou même toutes les icônes, dès le chargement du prog. Il suffira alors d'appliquer le fond, de dessiner l'icone et de créer la transparence... ca pose pas de problème a mon avis...
OKi, en tout cas merci les gars.... mais si qqun a une solution encore meilleur... par exemple appliquer la couleur "transparence" comme fond d'une form, ca serait parfaitement parfait... ca doit exister en .net ca, fo ke je m'y mette :-)
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 1 août 2004 à 02:49
J'oubliais... C en voyant une barre d'outils existante ke g eu l'idée d'en faire une comme ca, ca devait etre sur un mac, dans un film ou je ne sait plus ou... si on pouvait mettre une image dans le texte j'pourrais vous montrer ce ke ca donne pour l'instant.... mais ya ke des image en URL sauf erreur...
Bonne
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_liquide
Messages postés1016Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention24 juin 2008 1 août 2004 à 03:01
salut,
peut être la solution de mettre la form en transparent avec le "SetWindowLong"
je n'ai jamais essayer mais ca change l'attribut d'une form, avec le "GWL_EXSTYLE" et le "WS_EX_TRANSPARENT"
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 1 août 2004 à 07:04
En tout cas, si tu y arrive, n'hésite pas à nous montrer le résultat, ca doit être vraiment intéressant !
Tu peux utiliser ma classe de gestion d'image (voir ma source DKS_GESTION_IMAGE) pour manipuler tes pixels : elles te permettra d'avoir une bonne rapidité pour le traitement des pixels !
DarK Sidious
[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer