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 : 28058
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...

{Delphi} RÉGLE TRANSPARENTE POUR MESURER UN OBJET ECRAN
J'ai trouvé sur un site de téléchargement une application qui permet de mesurer des objets sur l'é...

{Visual Basic, VB6, VB.NET, VB 2005} BOUTON STYLÉ
Voici un composant pret à l'emploie. C'est un bouton en dégradé dont on peut paramétrer l'apparence...

{Visual Basic, VB6, VB.NET, VB 2005} CAPTURE ECRAN SELECTIVE
Encore une capture me direz vous Barre outil toujours visible permettant la capture: De l'écran ...

{Visual Basic, VB6, VB.NET, VB 2005} MODIFIER L'OPACITÉ D'UN FORMULAIRE AU PASSAGE DE LA SOURIS
Vous connaissez certainement le logiciel de retouche Paint.net Les boîtes à outils sont translucide...

{Delphi} BITMAP 32BITS INTÉGRÉ À LA VCL (TIMAGE, TPICTURE, TBITMAP, TOPENPICTUREDIALOG)
ça fait longtemps que j'ai ce code sous le coude (déjà plusieurs refontes) et j'ai pensé qu'il était...

{Visual Basic, VB6, VB.NET, VB 2005} TRANSPARENCE TEXTBOX ET PICTUREBOX
Mettre en transparence une TextBox et une PictureBox et les déplacer en drag and drop.Code très simp...

{Visual Basic, VB6, VB.NET, VB 2005} AFFICHER UNE IMAGE AVEC UN DEGRÉ DE TRANSPARENCE
cette source montre comment afficher dans un formulaire une image avec un degré de transparence C...

{Visual Basic, VB6, VB.NET, VB 2005} DÉPLACER UN OBJET TRANSPARENT (PNG AVEC COUCHE ALPHA) SUR UN PICTUREBOX EN VB6
Une image RVB est chargé dans Picture1 Picture1.picture est Convertit en tableau Bitmap 24 Bits(Get...

{C# / C#.NET} DOCK CIRCULAIRE AVEC EFFET , AVEC TRAITEMENT IMAGE ET TRANSPARENCE
Voila, le code pour faire un dock de type rocket dock sous forme de rond et pas en ligne. Il est fon...