Les Snippets

Connexion

Rendre une feuille semi-transparente

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 27/04/2006 07:57:07 et initié par DARKSIDIOUS [Liste]
Date de mise à jour : 09/08/2006 23:12:40
Vue : 17996
Catégorie(s) : API, Trucs & Astuces, WinForm
Langages dispo pour ce code :
- VB6
- C# 1.x, C# 2.x
- C
- C++
- Delphi 5
- Windev
- HTML
- VB.NET 1.x
- Delphi 5



Langage : VB6
Date ajout : 27/04/2006
Posté par DARKSIDIOUS [Liste]
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Const GWL_EXSTYLE = -20
Const WS_EX_LAYERED = &H80000
Const LWA_ALPHA = &H2
Private Form_Load()
Dim Ret As Long
    Ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
    Ret = Ret Or WS_EX_LAYERED
    SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret
    SetLayeredWindowAttributes Me.hWnd, 0, 128, LWA_ALPHA
End Sub

Langage : C# 1.x , C# 2.x
Date ajout : 27/04/2006
Posté par Bidou [Liste]
DateMAJ : 09/08/2006

// Valeur comprise entre 0 et 1
// 0 = Transparent  1 = Normal
this.Opacity = 0.5; // 50 % 

Langage : C
Date ajout : 03/05/2006
Posté par SAKingdom [Liste]
DateMAJ : 03/05/2006

void SetWindowAlpha (HWND hWnd, BYTE Level)
{
   long style;
   style = GetWindowLong(hWnd, GWL_EXSTYLE);

   style = style|WS_EX_LAYERED;
   SetWindowLong(hWnd, GWL_EXSTYLE, style);
   SetLayeredWindowAttributes(hWnd, 0, Level, LWA_ALPHA);
}

Langage : C++
Date ajout : 05/05/2006
Posté par jfrancois [Liste]

Voici ce qu'il faut faire avec un Visual C++ ancien

1) ajouter ces déclarations dans un fichier d'entête personnel


// --- Utilisation de la fonction "SetLayeredWindowAttributes"
// --- pour régler l'opacité d'une fenêtre
#ifndef WS_EX_LAYERED
#define WS_EX_LAYERED  0x00080000
#define LWA_COLORKEY   0x00000001
#define LWA_ALPHA      0x00000002
#endif


typedef BOOL (WINAPI* lpfnSetLayeredWindowAttributes)(HWND,COLORREF,BYTE,DWORD);

 

2) Fonction de réglage de l'opacité d'une fenêtre à implémenter dans le programme


bool SetOpacity
(
    HWND hWnd     // E:Handle de la fenêtre
   ,int  iOpacity // E:pourcentage d'opacité (0=invisible à 100=opaque=totalement visible)
)                 // S:true=ok false=non réalisé (OS incompatible ou outil non trouvé)
{
   // --- Vérifier que l'on tourne sous Win2K
   OSVERSIONINFO Version = {sizeof(OSVERSIONINFO)};
   GetVersionEx(&Version);
   bool bWin2K = (Version.dwPlatformId == VER_PLATFORM_WIN32_NT && Version.dwMajorVersion >= 5); 
   if (! bWin2K) return false; // OS incompatible

   // --- Pointer la fonction utilisée dans la DLL "USER32.DLL"
   HMODULE hUser32 = GetModuleHandle("USER32.DLL");
   if (hUser32 == NULL) return false; // DLL non trouvée
   lpfnSetLayeredWindowAttributes SetLayeredWindowAttributes =
      (lpfnSetLayeredWindowAttributes)GetProcAddress(hUser32,"SetLayeredWindowAttributes");
   if (SetLayeredWindowAttributes == NULL) return false; // fonction non trouvée

   // --- Ajouter le style nécessaire à la fenêtre
   SetWindowLong(hWnd,GWL_EXSTYLE,GetWindowLong(hWnd,GWL_EXSTYLE) | WS_EX_LAYERED);

   // --- Assurer que le pourcentage d'opacité soit entre 0 et 100
   iOpacity = iOpacity < 0 ? 0 : (iOpacity > 100 ? 100 : iOpacity);

   // --- Régler l'opacité
   SetLayeredWindowAttributes(hWnd,0,(BYTE)(iOpacity * 255 / 100),LWA_ALPHA);
   return true;
}

 

3) Remarque


Dans la fonction "SetLayeredWindowAttributes", la constante LWA_ALPHA permet de régler
l'opacité générale de la fenêtre avec le niveau passé dans le troisième argument
(0=invisible à 255=opaque)
(et la couleur passée en deuxième argument, 0 ci-dessus, n'a aucune signification).

Cette constante peut être remplacée par LWA_COLORKEY pour ne régler l'opacité de la
fenêtre que par rapport à une couleur qui doit alors être passée dans le deuxième argument (et le niveau d'opacité passé en troisième argument n'a aucune signification).

Exemple :

   COLORREF rouge = RGB(255,0,0);
   SetLayeredWindowAttributes(hWnd,rouge,0,LWA_COLORKEY);


rendra transparent tout ce qui est rouge dans la fenêtre
(c'est à dire que les pixels rouges ne sont pas visualisés).


Langage : Delphi 5
Date ajout : 06/05/2006
Posté par Yil2201 [Liste]
Delphi 6, 7 :
A placer dans le OnCreate de la form.
// On règle la propriété AlphaBlend sur True
Form1.AlphaBlend:=True;
// On choisit le niveau de transparence ( 0 : tout transparent, 255 : opaque )
Form1.AlphaBlendValue:=230;

Langage : Windev
Date ajout : 15/06/2006
Posté par Elian Lacroix [Liste]
// On donne à la fenêtre une opacité comprise entre 0 et 100%
// Exemple :
Fenêtre..Opacité = 50

// Un autre exemple, rendre la fenêtre invisible petit à petit (fade out)
i est un  entier
POUR i=1 A  10
     Fenêtre..Opacité = 100-i*10
FIN

Langage : HTML
Date ajout : 20/06/2006
Posté par WhiteDwarf [Liste]
<div style="FILTER: alpha(opacity=50); moz-opacity: 0.5;opacity:0.5;"> Contenu de la div </div>
// FILTER: alpha(opacity=50) pour IE
// moz-opacity: 0.5; pour mozilla
// opacity: 0.5; pour firefox et autres

Remarque :
C'est plutôt du CSS...
Langage : VB.NET 1.x
Date ajout : 18/12/2006
Posté par OneHacker [Liste]
   Me.Opacity = 0.5
Langage : Delphi 5
Date ajout : 22/02/2007
Posté par cirec [Liste]
{Fonctionne avec toutes les versions de Delphi}
//*************************à déclarer que pour les versions antérieurs à D7*********************
Const
    LWA_ALPHA = $2;
    GWL_EXSTYLE = (-20);
    WS_EX_LAYERED = $80000;
    WS_EX_TRANSPARENT = $20;
  function SetLayeredWindowAttributes(Hwnd: THandle; crKey: COLORREF; bAlpha: Byte; dwFlags: DWORD):
    Boolean; stdcall  external 'user32.dll' name 'SetLayeredWindowAttributes';
//*************************************************************************************
 
Type
  TValue = 0..100;

IMPLEMENTATION
{Gère la transparence d'une fenêtre}
procedure SetAlpha(hWnd: THandle;   value: TValue);
begin
  SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd,GWL_EXSTYLE) or WS_EX_LAYERED);
  SetLayeredWindowAttributes(hwnd, 0, (255 * (100 - value)) DIV 100, LWA_ALPHA);
end;
{Utilisation de : SetAlpha pour obtenir une transparence de 20%}
procedure TForm1.Button1Click(Sender: TObject);
begin
  SetAlpha(Handle, 20);
end;


Snippets en rapport avec : Transparence, Setlayeredwindowattributes



Codes sources en rapport avec : Transparence, Setlayeredwindowattributes

{Delphi} FORCER LA TRANSPARENCE DES FENÊTRES (WINDOWS XP ET SUPÉRIEUR)
Ce petit programme permet de lister les fenêtres visibles sur votre système et de gérer leur transpa...

{Visual Basic, VB6, VB.NET, VB 2005} TRANSPARENCE GÉNÉRALISÉE DES PICTUREBOX
Ce code fait suite à celui proposé pour la transparence de deux images. Il permet de traiter la tran...

{Javascript / DHTML} FENETRE QUI SE DEPLACE
Creation d'un calque qui se deplace avec un bouton pour reduire la fenetre et un bouton pour la ferm...

{Visual Basic, VB6, VB.NET, VB 2005} TRANSPARENCE DES PICTUREBOX
Il s'agit de dessiner deux pictureBox se chevauchant et en définissant une couleur de transparence e...

{Visual Basic, VB6, VB.NET, VB 2005} COOL CAPTURE BMP TO ICO
Juste pour s’amuser. Mais peut être utile ! Une form transparente qui capture l’image se trouvant d...

{Visual Basic, VB6, VB.NET, VB 2005} TRANSITION FLUIDE PAR FONDU ENTRE IMAGES DE GARNDE TAILLE
Mon problème est de réaliser dans un programme Visual Basic un swap de plusieurs images de grande ...

{Javascript / DHTML} BUG FIX DE LA TRANSPARENCE DES PNG SOUS IE 6
Un code très court en css/javascript pour régler la non-prise en charge de la transparence sous Inte...

{Visual Basic, VB6, VB.NET, VB 2005} FORMS SKINNABLES STYLE WIDGET (VB2005)
Fenêtre skinnable en Visual Basic 2005. Permet l'affichage de Fenêtres à partir de fichiers png, ...

{Visual Basic, VB6, VB.NET, VB 2005} IMAGE PNG COMME SPLASHSCREEN (FAUX TRANSPARENT)
J'ai longtemps cherché un moyen pour faire cohabiter le PNG avec vb6, puis j'ai trouvé un code sur v...

{C# / C#.NET} RENDRE UNE FENETRE TRANSPARENTE EN CAS DE DÉPLACEMENT DE CELLE CI PAR L'UTILISATEUR
Lorsque que l'on déplace une fenetre c'est souvant pour voir ce qu'il y a en dessous, mais où que l'...