elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  (solucionado) Progressbar + label = ¿NO transparencia?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (solucionado) Progressbar + label = ¿NO transparencia?  (Leído 2,866 veces)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.700



Ver Perfil
(solucionado) Progressbar + label = ¿NO transparencia?
« en: 28 Noviembre 2012, 18:43 pm »

Estoy harto del tema de las transparencias en los winforms...

aver si me podeis ayudar, el problema es sencillo, la solución...no lo sé.

un label "transparente" encima de una barra de progreso:


¿Como puedo hacerlo transparente de verdad?

Gracias...


« Última modificación: 29 Noviembre 2012, 00:27 am por EleKtro H@cker » En línea


seba123neo


Desconectado Desconectado

Mensajes: 3.621


"No quiero creer, quiero saber" - Carl Sagan


Ver Perfil WWW
Re: Progressbar + label = ¿NO transparencia?
« Respuesta #1 en: 28 Noviembre 2012, 19:24 pm »

create tu propio control que herede del label, de esa forma podes setearle algunas propiedades que lo hacen transparente de verdad.

Código
  1. Public Class Label_Transparent
  2.    Inherits System.Windows.Forms.Label
  3.  
  4.    Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
  5.        Get
  6.            Dim cp As CreateParams = MyBase.CreateParams
  7.            cp.ExStyle = cp.ExStyle Or &H20
  8.            Return cp
  9.        End Get
  10.    End Property
  11.  
  12.    Public Sub New()
  13.        Me.SetStyle(ControlStyles.SupportsTransparentBackColor, True)
  14.        Me.SetStyle(ControlStyles.ResizeRedraw, True)
  15.        Me.SetStyle(ControlStyles.UserPaint, True)
  16.        Me.SetStyle(ControlStyles.OptimizedDoubleBuffer, False)
  17.    End Sub
  18.  
  19.    Protected Overrides Sub OnPaintBackground(ByVal pevent As System.Windows.Forms.PaintEventArgs)
  20.        If MyBase.BackgroundImage IsNot Nothing Then
  21.            MyBase.OnPaintBackground(pevent)
  22.        End If
  23.    End Sub
  24.  
  25.    Protected Overrides Sub OnForeColorChanged(ByVal e As System.EventArgs)
  26.        Me.Refresh()
  27.    End Sub
  28. End Class

con ese codigo se crea un label y funciona para lo que queres.


En línea

La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.700



Ver Perfil
Re: Progressbar + label = ¿NO transparencia?
« Respuesta #2 en: 28 Noviembre 2012, 22:29 pm »

MUCHÍSIMAS GRACIAS SEBA

EDITO: Lo he solucionado con un "invalidate"

eres un crack haciendo eso de crear controles transparentes.  :xD

Pero ahora me ha surgido un problema con este nuevo label (con el label normal no tengo este problema)

Cuando ejecuto la app todo aparece bien, el label encima de la barra:


Pero cuando refresco (progessbarbar.refresh()) la barra, el label trsnaparente se pone detrás de la barra y no puedo verlo...


¿Sabes como puedo arreglarlo?

Y otra pregunta, hay alguna forma sencilla de exportar tu label trsnaparente como un nuevo controll DLL para instalarlo en la IDE? Si es muy dificil o es bastante extenso de realizar no importa, no quiero marearte más xD.

Un saludo
« Última modificación: 29 Noviembre 2012, 00:27 am por EleKtro H@cker » En línea


seba123neo


Desconectado Desconectado

Mensajes: 3.621


"No quiero creer, quiero saber" - Carl Sagan


Ver Perfil WWW
Re: Progressbar + label = ¿NO transparencia?
« Respuesta #3 en: 29 Noviembre 2012, 02:32 am »

hay alguna forma sencilla de exportar tu label trsnaparente como un nuevo controll DLL para instalarlo en la IDE?

para hacer eso tenes que crear un proyecto de tipo "biblioteca de clases", y ahi entonces pones ese codigo en una clase y listo, al generar la solucion se va a generar una dll
En línea

La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines