Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Eleкtro en 28 Noviembre 2012, 18:43 pm



Título: (solucionado) Progressbar + label = ¿NO transparencia?
Publicado por: Eleкtro 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:
(http://img16.imageshack.us/img16/6936/prtscrcapture2i.jpg)

¿Como puedo hacerlo transparente de verdad?

Gracias...


Título: Re: Progressbar + label = ¿NO transparencia?
Publicado por: seba123neo 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.


Título: Re: Progressbar + label = ¿NO transparencia?
Publicado por: Eleкtro 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:
(http://img706.imageshack.us/img706/1589/prtscrcapture2u.jpg)

Pero cuando refresco (progessbarbar.refresh()) la barra, el label trsnaparente se pone detrás de la barra y no puedo verlo...
(http://img835.imageshack.us/img835/264/prtscrcapture3i.jpg)

¿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


Título: Re: Progressbar + label = ¿NO transparencia?
Publicado por: seba123neo 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