Ventanas Transparentes desde C#
Domingo, 29 de Marzo de 2009Aqui les dejo como hacer las ventanas transparentes con API de windows desde C#
Incluye este using en la cabesera del programa.
using System.Runtime.InteropServices;
Declara la clase WinApi donde guardaremos los apis de Windows a utilizar.
public class WinApi
{
public static int GWL_EXSTYLE = -20;
public static int WS_EX_LAYERED = 0x80000;
public static int LWA_ALPHA = 0x2;
[DllImport("user32")]
public static extern int SetLayeredWindowAttributes(int hWnd, byte crey, byte alpha, int dwFlags);
[DllImport("user32")]
public static extern int GetLayeredWindowAttributes(int hWnd, byte crey, out byte alpha, int dwFlags);
[DllImport("user32")]
public static extern int SetWindowLong(int hWnd, int nIndex, int dwNewLong);
[DllImport("user32")]
public static extern int GetWindowLong(int hWnd, int nIndex);
}
Esta es la funcion para hacer las ventanas transparentes.
void mkwndtrans(int hWnd, int num){
int oldWinStyle = WinApi.GetWindowLong(hWnd, WinApi.GWL_EXSTYLE);
WinApi.SetWindowLong(hWnd, WinApi.GWL_EXSTYLE,
num < 255 ? oldWinStyle | WinApi.WS_EX_LAYERED :
oldWinStyle & WinApi.WS_EX_LAYERED);
WinApi.SetLayeredWindowAttributes(hWnd, 0, (byte)num, WinApi.LWA_ALPHA);
}
Para llamar a la funciones solo escribimos su nombre y pasamos los argumentos hwnd que es el handle o identificador de la ventana que queremos hacer transparente y num que el numero de transparencia alpha que va desde 0 al 255 siendo el 0 invisible y el 255 totalmente visible.



