IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Transparence des images de fond de fenêtre


Sujet :

WinDev

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut Transparence des images de fond de fenêtre
    Bonjour,

    J'utilise une image perso comme fond de fenêtre. J'ai besoin d'exploiter les transparence. J'ai essayer différents formats en utilisant le magenta comme couleur de transparence mais cela ne fonctionne pas (le magenta reste visible).

    J'ai donc opté pour un format png qui gère la transparence sur un canal alpha.

    Le problème c'est que Windev me dit que cela ralenti mon application !?

    Selon vous,
    - Vrai ou faux que les images de fond avec un canal alpha ralentissent l'application ?
    - Pourquoi mes images avec magenta ne fonctionnent pas au niveau de la transparence ?

    Merci de votre aide
    Les solutions les plus simples sont les plus efficaces

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    J'ai résolu le problème en optant pour des images de type BMP.

    Problème, elles sont plus lourdes.
    Qu'elle est la meilleure solution ?

    Merci
    Les solutions les plus simples sont les plus efficaces

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 7
    Points : 10
    Points
    10
    Par défaut
    salut

    peut être trop tard mais ça peut aider je me sers de cela pour rendre le fond d'une fenêtre transparent

    créer une procédure globale : fg_TransparenceFenetre, y coller ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    // Syntaxe :
    //[ <Résultat> = ] fg_TransparenceFenetre ( [<sNomFenetre> [, <eOpacite> est entier [, <eCouleur> est entier [, <sErr> est chaîne]]]])
    //
    // Paramètres :
    //	sNomFenetre : <indiquez ici le rôle de sNomFenetre>
    //	eOpacite (entier - valeur par défaut=128) : <indiquez ici le rôle de eOpacite>
    //	eCouleur (entier - valeur par défaut=0) : <indiquez ici le rôle de eCouleur>
    //	sErr (chaîne ANSI - valeur par défaut="") : <indiquez ici le rôle de sErr>
    // Valeur de retour :
    // 	booléen : // 	Aucune
    // Exemple :
    // Indiquez ici un exemple d'utilisation.
    //
    PROCEDURE fg_TransparenceFenetre(sNomFenetre = FenEnExécution, eOpacite est un entier=128, LOCAL eCouleur est un entier=Null, sErr est une chaîne="")
    // Paramètres (tous optionnels) :
    //		- sNomFenetre	: nom de la fenetre à modifier
    //		- eOpacité		: entier 0 à 255 : degré d'opacité à appliquer (uniquement pour la fenetre entière, la couleur de pixel ne doit pas être spécifié).
    //					0 = transparence totale
    //					255 = opacité totale
    //		- eCouleur	: entier, filtre de couleur RVB (la transparence (totale) ne sera appliquée que pour
    //						les pixels de la couleur concernée. Si Null ou aucun parametre, l'opacité sera 
    //						appliquée pour tous les pixels de la fenetre, avec le degré d'opacité spécifié
    //		- sErr		: chaine passée par adresse pour récupérer les erreurs éventuelles
    // Retour		: Booléen, VRAI en cas de succès
    //				  en cas d'erreur, la fonction retourne FAUX et la chaine
    //				  sErr passée par adresse peut être récupérée.
    // Références API: 
    // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing.asp
    // 
    // Exemple :
    //	sRetourErreur est une chaine=""
    //	SI OuiNon("OUI -> toute la fenêtre"+rc+"NON -> Pixels blancs seuls  ?") ALORS
    //		// toute la fenetre, opacité à moitié
    //		// on ne teste pas le retour d'erreur
    //		pg_TransparenceFenetre()
    //	SINON
    //		// uniquement les pixels blancs, transparence totale
    //		SI pg_TransparenceFenetre(FenEnExécution(), 0, iblanc, sRetourErreur) ALORS
    //			Info("La fenetre a bien été rendue totalement transparente pour les pixels blancs")
    //		SINON
    //			Erreur("Erreur, la fenêtre n'a pas pu être rendue transparente, raison : "+ sRetourErreur)
    //		FIN
    //	FIN
     
     
    LWA_COLORKEY est un entier = 1
    LWA_ALPHA est un entier = 2
    GWL_EXSTYLE	est un entier = -20
    WS_EX_LAYERED est un entier = 0x80000
     
    bRetour	est un booléen = Faux
    eParam est un entier
     
    EHan est un entier système
     
     
     
     
    eWdStyle est un entier
     
    SI SysVersionWindows(sysVersionPlateForme) = "NT" ALORS
     
    	SI (SysVersionWindows()<>"NT 3.5" ET SysVersionWindows()<>"NT 4") ALORS
    		SI eOpacite<0 OU eOpacite>255 ALORS eOpacite = 128
    		EHan = Handle(sNomFenetre)
    		// Récupère le style de la fenetre en cours
    		eWdStyle=API("USER32.DLL","GetWindowLongA",EHan,GWL_EXSTYLE)
     
    		SI eWdStyle <> 0 ALORS
    			// donne le style 'layered' à la fenetre
    			eWdStyle = OUBinaire(eWdStyle, WS_EX_LAYERED)
    			SI API("user32", "SetWindowLongA", EHan, GWL_EXSTYLE, eWdStyle)<>0 ALORS
    				// reglage de l'opacité
    				SI eCouleur=Null ALORS
    					// pas de couleur spécifiée : pour tous les pixels
    					eParam = LWA_ALPHA
    					eCouleur = 0
    				SINON 	// la couleur est spécifiée, l'opacité n'a pas d'importance
    					eParam = LWA_COLORKEY
    				FIN
    				SI API("user32", "SetLayeredWindowAttributes", EHan, eCouleur, eOpacite, eParam)<>0 ALORS
    					bRetour = Vrai
    				SINON
    					sErr = "Erreur dans la fonction SetLayeredWindowAttributes, détails de l'erreur système : "+ ErreurInfo(errMessageSystème)
    				FIN	
    			SINON
    				sErr = "Erreur dans la fonction SetWindowLongA, détails de l'erreur système : "+ ErreurInfo(errMessageSystème)
    			FIN
    		SINON
    			sErr = "Erreur dans la fonction GetWindowLongA, détails de l'erreur système : "+ ErreurInfo(errMessageSystème)
    		FIN
    	SINON
    		sErr = "Cette fonction n'est pas disponible avec la version de Windows installée (NT 3.5 ou 4)."
    	FIN
    SINON
    	sErr = "Cette fonction n'est pas disponible avec la version de Windows installée (W32s, W9x ou ME)."
    FIN
     
     
    RENVOYER bRetour
    après je mets ce code dans ma fenêtre avec fond blanc
    dans initialisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    co est un entier = RVB(255,255,255)
    fg_TransparenceFenetre(nomdelafenetre,1,co)
    marche sous WinDev 17 + Xp + Seven 32 et 64

    @plus

Discussions similaires

  1. Transparence des images PNG sous Internet Explorer
    Par Torpedox dans le forum Webdesign & Ergonomie
    Réponses: 12
    Dernier message: 14/10/2008, 23h41
  2. [Beamer] Transparence et image de fond
    Par benibov dans le forum Beamer
    Réponses: 2
    Dernier message: 09/06/2007, 14h04
  3. [Pygame] Transparence des images
    Par anthyme dans le forum Programmation multimédia/Jeux
    Réponses: 2
    Dernier message: 21/02/2007, 22h34
  4. transparence des images
    Par philimo dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 28/09/2006, 20h26
  5. Priorité d'affichage des image de fond.
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 06/09/2005, 18h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo