sábado, 6 de octubre de 2012

Form con fondo transparente C# .net

Hola que tal, aqui les enseñare un pequeño truquito que es desconocido por muchos que es bastante facil y rapido.
El truco consiste en hacer que la ventana o mas bien digamosle nuestro windows form se vuelva transparente, pero ojo una cosa es hacer todos los objetos transparentes y otra es dejar tu form transparentes pero con tus objetos como botones, imagenes, labels sin transparencia.
Bueno con el ejemplo se daran cuenta de que hablo:

Vamos a empezar creando un nuevo proyecto de windows form, pongamos un PictureBox, un boton y un label asi como lo muestro:


Yo en photoshop hice una imagen con fondos transparente .PNG para ponerla en el pictureBox y vean el efecto que hay, igual de todos modos se daran cuenta tambien con los botones y labels que pusimos.
Bueno el truco consiste que en las propiedas BackColor y TransparencyKey de nuestro Form tengan el mismo color, es decir si le pongo de color Silver al BackColor entonces el TransparencyKey debera de tener el mismo color Silver.
 


Como se dieron cuenta en las dos imagenes tengo el mismo color en las dos propiedades y ya agregue una imagen a mi pictureBox con fondo transparente, ahora compilamos y veamos el efecto.



Ahora otro efectito para que se se note aun mas, en la propiedad de FormBorderStyle le ponemos None





y listo tenemos el efecto aplicado.



Eso les puede servir para su pantalla de login o igual para lo que necesiten, espero les haya servido de algo.

Cualquier duda que tengan de lo que sea pueden preguntar o sugerir de algun tema que quieren que explique para exponerles una solucion, no necesariamente tiene que ser de windows forms, tambien puede ser de consola o igual cualquier necesidad que tengan lo mas minima que sea es bien recibida.

Saludos.
Misael Ontiveros.


22 comentarios:

  1. Interesante gracias!
    Podrias hacer un pequeño tutorial como este pero para poner el fondo de botones transparente te agradeceria.

    Ando buscando como lo podria hacer,
    creo un boton pongo una imagen con fondo transparente .PNG en
    (BackgrounImage)
    pero el (BackColor)

    no me deja poner transparente ando investigando como se haria salu2 grax por el tuto

    ResponderEliminar
    Respuestas
    1. Que tal amigo, pues mira hay dos opciones para hacer eso.
      1: Darle clic a las propiedades del boton y donde dice BackColor elige Transparent, al darle clic ahi a lo mejor no cambia el color transparente pero lo que tienes que hacer tambien es en la propiedad de FlatStyle elegir la que dice Flat, esto hara que el boton tome el fondo transparente y cambie de apariencia, entonces para poder cambiar el color de los contornos del boton y del texto solo elige en la propiedad de ForeColor el color que gustes, asi cambiara como te digo los colores del contorno del boton asi como su texto, pero su fondo seguira siendo transparente. Me dices si te sirvio ese tip y si lo pudiste hacer, si no pudiste entonces subire un tutorial sencillito de como hacerlo, saludos.

      Eliminar
    2. Se me olvido decirte, ya qe hagas eso pues como tu boton ya es de fondo transparente pues le puedes poner una imagen en PNG adecuada al tamaño del boton y no deberia de haber algun problema..
      El color Transparent esta en la propiedad BackColor en la pestaña Web por si no lo encuentras, de hecho es el primerito que sale, ahi me avisas que tal te fue.

      Eliminar
  2. Si me sirvio amigo muchas gracias!!!!!!!! ;)

    lo unico en la propiedad de ForeColor no se pone transparente, aunque escoji la opcion transparente, me deja el marco de color blanco mira la imagen http://i.imgur.com/aKhWhct.jpg

    ResponderEliminar
    Respuestas
    1. Ah ok entiendo, no pues mira te paso otro tip checa:
      En igual de poner un boton mejor pon un pictureBox, pones la imagen dentro del pictureBox con fondo transparente claro y en las propiedades de Click tambien puedes hacer la accion que necesites hacer asi de sencillo, no te quedaran bordes ni nada pero tendra la misma accion que el boton.. Ahora si quieres que al pasar el mouse sobre el pictureBox en la propiedad de Cursor solo selecciona la que dice Hand y listo amigo.

      Eliminar
  3. Si me sirvio con PictureBox
    Muchasss graciasssssssss amigo!!!!!!!!!
    por la gran ayuda salu2 ;)

    ResponderEliminar
  4. Hola, podrias decirme como colocaste la imagen transparente desde cero?
    yo quiero hacer que un texto parpadee, pero que solo se vea el texto, y el form no se vea.

    Te pego el codigo que tengo haber si me podes dar una mano.

    Gracias

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace WindowsFormsApplication1
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    timer1.Interval = 200;
    }

    private void label1_Click(object sender, EventArgs e)
    {
    timer1.Start();
    }


    private void timer1_Tick_1(object sender, EventArgs e)
    {
    label1.Visible = !label1.Visible;
    }

    private void pictureBox1_Click(object sender, EventArgs e)
    {

    }

    }
    }

    ResponderEliminar
    Respuestas
    1. Que tal amigo, pues la imagen debe de ser en formato PNG con fondo transparente, si no sabes como quitarle el fondo te recomiendo usar photoshop y ahi buscar un tutorial en youtube para quitar fondos es muy facil, para el texto has de cuenta que en su propiedad de BackColor debes de ponerlo como Transparent, para el Form en su propiedad FormBorderStyle debes de dejarlo como NONE y la propiedad BackColor y TransparencyKey deben de ser del mismo color para que se vuelva transparente, me dices si te sirvio amigo.

      Eliminar
  5. Ok, anduvo perfecto muchas gracias!!!!

    Una mas!!, necesito reproducir un video al iniciar el programa, pero que se vea a pantalla completa solo el video sin botones ni ventana,
    alguna idea?

    Saludos y gracias por la ayuda.

    ResponderEliminar
    Respuestas
    1. Que tal amigo, pues una forma sencilla es reproducirlo con los componentes COM que trae por default las dll de Windows Media Player, es sencillo para esto te dejo el siguiente link que muestra y te dice como hacerlo de la manera mas facil: http://www.carballude.es/blog/2007/10/19/reproducir-musica-mp3-ogg%E2%80%A6-y-video-avi-divx-mpeg%E2%80%A6-en-c-mediante-windows-media-player/ Espero te sirva de ayuda amigo.

      Eliminar
  6. Muchas gracias me a sido de mucha ayuda!! lo e logra hacer.

    Seguramente volvere a molestar con alguna otra consulta, ya que estoy recien aprendiendo este lenguaje y me falta mucho para poder dominarlo mas o menos bien.

    Gracias
    Saludos

    ResponderEliminar
  7. Bueno pues... ya volvi con mis dudas
    La cuestion es que lo que quiero hacer es que inicie una reproduccion de un video a pantalla completa y se siga reproducciendo hasta que se precione una tecla del teclado, por ejemplo el numero 5, se cierre el video y abra otro programa.
    E intentado de todo pero no logro que estando a pantalla completa me reconosca la pulsacion de la tecla, si lo hace en modo ventana.

    Gracias

    ResponderEliminar
  8. Me olvide de poner el codigo:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace WindowsFormsApplication1
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }

    private void axWindowsMediaPlayer1_Enter(object sender, EventArgs e)
    {

    }

    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
    if (e.KeyCode == Keys.Enter)
    {
    System.Diagnostics.Process.Start(@"c:\WINDOWS\NOTEPAD.EXE");
    }
    }
    }
    }

    ResponderEliminar
  9. Si mira lo que pasa es que cuando tu ya tienes en modo completo la reproducción de tu video en windows media player el componente no se puede parar debido a que no es propio de la compilación de tu programa, si no mas bien llamaste abrir ese programa por medio de un comando digamosle así, pero en realidad no tienes ningún vinculo de programación para hacer un evento con windows media pero mira en la parte donde tienes esto: if (e.KeyCode == Keys.Enter)
    {
    System.Diagnostics.Process.Start(@"c:\WINDOWS\NOTEPAD.EXE");
    }

    antes de ejectuar el notepad intenta llamando con esto: windowsMedia.Ctlcontrols.play(); pero en igual de Play busca una opción que tenga ya sea Stop o Close para que el plugin se cierre, si no entonces debes de cerrar la ventana llamando al evento Close() de la forma donde tienes abierto el windows media player.. intentalo con: nombreDeTuForma.Close(); o si no intenta llamar una instancia que igual no creo que te sirva pero intentalo:
    nombreDeTuForma form = new nombredeTuForma();
    form.close(); o si no form.exit(); Dices que tu video ya se reproduce en pantalla completa verdad?

    ResponderEliminar
  10. Gracias por responder, la solucion fue cerrar el form y abrir uno nuevo.

    Gracias saludos

    ResponderEliminar
    Respuestas
    1. Que bueno que te haya servido amigo, éxito en tu proyecto.

      Eliminar
  11. Hola, en el Visual 2012 no aparece la propiedad Transparence Key en los botones, a diferencia del 2010, entonces en la versión 2012 no es posible hacer el botón transparente?

    ResponderEliminar
    Respuestas
    1. Que tal, la propiedad si debe de aparecer amigo, a lo mejor no te sale por dos posibles errores: 1. Quiza no estas viendo las propiedades del form al que quieres hacer transparente, a lo mejor tienes seleccionado un boton o cualquier otro objeto. 2. Quiza sea problema de los frameworks que tienes instalado, checa que por lo menos tengas el 4.0, saludos me comentas que tal.

      Eliminar
  12. Jeje Buena esa men, Gracias te lo agradesco muchicimo, ya estaba casi dandome por vencido de la solucion a lo ami problema. Jjeje :D

    ResponderEliminar
  13. Muchas Gracias me sirvió mucho

    ResponderEliminar