(solucionado) Progressbar + label = ¿NO transparencia?

Iniciado por Eleкtro, 28 Noviembre 2012, 18:43 PM

0 Miembros y 1 Visitante están viendo este tema.

Eleкtro

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








seba123neo

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

Código (vbnet) [Seleccionar]
Public Class Label_Transparent
    Inherits System.Windows.Forms.Label

    Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
        Get
            Dim cp As CreateParams = MyBase.CreateParams
            cp.ExStyle = cp.ExStyle Or &H20
            Return cp
        End Get
    End Property

    Public Sub New()
        Me.SetStyle(ControlStyles.SupportsTransparentBackColor, True)
        Me.SetStyle(ControlStyles.ResizeRedraw, True)
        Me.SetStyle(ControlStyles.UserPaint, True)
        Me.SetStyle(ControlStyles.OptimizedDoubleBuffer, False)
    End Sub

    Protected Overrides Sub OnPaintBackground(ByVal pevent As System.Windows.Forms.PaintEventArgs)
        If MyBase.BackgroundImage IsNot Nothing Then
            MyBase.OnPaintBackground(pevent)
        End If
    End Sub

    Protected Overrides Sub OnForeColorChanged(ByVal e As System.EventArgs)
        Me.Refresh()
    End Sub
End Class


con ese codigo se crea un label y funciona para lo que queres.
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

#2
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








seba123neo

Cita de: EleKtro H@cker en 28 Noviembre 2012, 22:29 PM
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
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