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

{C# / C#.NET} WINDOWSGADGET LIKE
Class permettant de rendre un formulaire assez proche de ce que fait la sidebar de windows 7. Ce n'e...

{Visual Basic, VB6, VB.NET, VB 2005} MESSAGE AUTO (MSG_AUTO)
Affiche un message qui disparait par transparence automatiquement au bout de quelques secondes. Remp...

{Visual Basic, VB6, VB.NET, VB 2005} ALARMA! - TRANSPARENCE, ZONE DE NOTIFICATION
Programme permettant de programmer des alarmes à la date et à l'heure de votre choix. Ce n'est ni t...

{Visual Basic, VB6, VB.NET, VB 2005} CLSWIDGET = UNE CLASS POUR FAIRE UN WIDGET AVEC INFOBULLE ET MENU POPUP
C'est un module de class qui peut servir de base pour faire un widget avec infobulle, menu popup, dé...

{Javascript / DHTML} FADEIN EFFET DE FONDU, ANIMATION D'OPACITE TOUT EN JAVASCRIPT
voila comment faire des effets d'apparition ou de disparition de vos Div ou autre Span comprenant un...

{Visual Basic, VB6, VB.NET, VB 2005} UN PATCH EN VB (V3)
Bon voilà c'est une update d'un de mes anciens code: http://www.vbfrance.com/codes/PATCH-VB_44485.a...

{Visual Basic, VB6, VB.NET, VB 2005} DÉGRADÉ DE DEUX COULEURS AVEC TRANSPARENCE ET ANGLE
je sais qu'il y a pas mal de codes qui traite se sujet , j'espère que celui la est différant et plus...

{Visual Basic, VB6, VB.NET, VB 2005} JOUR SUR TERRE
Ce Programme montre la partie illuminée de la Terre. Visualisation sur une mappemonde. Présenté ...

{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'é...