Icône semi transparente sur une feuille transparente

Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 - 28 juil. 2004 à 19:23
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Derniè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.. !?!?

6 réponses

cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
29 juil. 2004 à 02:26
Salut,

OUHAAA je n'ai pas tout compris mais quand tu auras finis ca devrait donner un truc pas mal du tout.

et comme je n'ai pas tout compris....

peut être que je vais te dire une bétise, mais sur l'api Transparentblt, tu crées une transparence sur une couleur donnée.

Pour les forms, ca ne risque pas d'être lourd à la fin d'une 20aine de chargement de form ?

Bonne prog, poele_a_frire@hotmail.com
liquide
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
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
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
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 :-)

A la prochaine
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 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"

Bonne prog, poele_a_frire@hotmail.com
liquide
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
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
0
Rejoignez-nous