Los foros del Guille

Si no encuentras respuesta, puedes buscar en el sitio del Guille

Google
 

dotNetManía + el sitio del Guille:
¡La mejor información de punto NET!
¡Suscríbete ya! y consigue un 10% de descuento

Selecciona el foro y pulsa en mostrar:     Mostrar 
De tu interés (algunos de los avisos publicados)

04/may/2006
Nuevo foro: Dale caña al Guille..., en este foro podrás hacer comentarios sobre los artículos, trucos, etc., que estén publicado en mi sitio (no en los foros), ya sean mios o de los colaboradores.
Por favor, indica la URL del artículo que comentes. Gracias

  Foro: .NET VB Cantidad:  Desde:   Hasta:    Aplicar   Responder 
Respuestas a: 57175 - Label (u otro contenedor de texto) con fondo transparente
IDAsuntoFechaNick 
57175 Label (u otro contenedor de texto) con fondo transparente22/08/13 08:35morandeira   
Hola a todos...

explico mi problema a ver si alguien tiene la solución o me encamina a ella...

Mediante DirectSHOW reproduzco un video sobre un picturebox, usando el filtro VMR9. Hasta aquí todo bien... play rev stop, etc sin problemas.

La cuestión es que ahora, en la parte superior del vídeo debo poner un texto. Así que cogí un label (podría ser cualquier otro contenedor de texto si es encesario) lo ubico donde me interesa sobre el picturebox y establezco la propiedad TEXT con la cadena que me interesa. Ejecuto la aplicación y correcto, funciona, pero ahora me interesa que solo se vean las letras, es decir que el fondo del label sea transparente de forma que se vea el video debajo.

He visto por ahí el poner el parent del label al picturebox y backcolor del label a TRANSPARENT. El problema es que lo que veo en el fondo del label es el BACKCOLOR del picturebox o la imagen que esté cargada en el picturebox, pero no el video... que es lo que me interesa. TRANSPARENT funciona pero como si el video no existiera.

No sé si me explico... También he porbado algún control diseñado para esto, pero el mismo resultado... si lo que veo en el picturebox es un video, este no lo tiene en cuenta o el label aparece un milisegundo u desaparece, está ahí, pero no se ve.

Alguien puede guiarme para solucionar esto??

Si necesitáis más explicaciones (aunque veo que no se me da nada bien), no dudéis en preguntar... la idea es solucionar o encaminarme a una solución para esto.

Uso VB.Net de VStudio 2012.... e insisto con lo del video... me interesa ver como fondo del label el video. Digo insisto pq todas las soluciones que he encontrado en internet actúan sobre un picturebox con una imagen, no un video. En ese caso la propiedad parent y color.transparent del label funciona, pero no así cuando es un video lo que se está viendo en el picturebox.

Un saludo... y gracias por anticipado.
IDAsuntoFechaNick 
57178 Re: Label (u otro contenedor de texto) con fondo transparente (Resp: 57175)28/08/13 15:26El_Topper   
Hola,
Intenta dibujar un rectangulo transparente y escribir una cadena dentro.
He encontrado ésta función que alomejor te viene bien.


try

{


GraphicsStream stream = surface.LockRectangle(LockFlags.Discard);


try

{


int stride = alphaBitmap.Width * 4;


Bitmap bmp = new Bitmap(alphaBitmap.Width, alphaBitmap.Height, stride, alphaBitmap.PixelFormat, stream.InternalData);


using (Graphics gr = Graphics.FromImage(bmp))

{


int alpha50 = (int)(255 * 0.50f); /* 50% opacity */


int alpha100 = 255;


Brush blue50 = new SolidBrush(Color.FromArgb(alpha50, Color.Blue));


Brush blue100 = new SolidBrush(Color.FromArgb(alpha100, Color.Blue));


Font font = new Font("Tahoma", 24);


Brush text100 = new SolidBrush(Color.FromArgb(255, Color.White));

gr.SmoothingMode =

SmoothingMode.AntiAlias;

gr.TextRenderingHint =

TextRenderingHint.AntiAlias;

gr.Clear(

Color.Transparent);


if (colorChange)

{

gr.FillRectangle(blue50, 0, 0, 1024, 122);

gr.DrawString(

"Set Traverse X", font, text100, 5, 5);

gr.DrawString(

"Next", font, text100, 5, 70);

gr.DrawString(

"0.123", font, text100, 900, 5);

}


else

{

gr.FillRectangle(blue100, 0, 0, 1024, 122);

gr.DrawString(

"Gear Count", font, text100, 5, 5);

gr.DrawString(

"Next", font, text100, 5, 70);

gr.DrawString(

"40", font, text100, 900, 5);

}

font.Dispose();

text100.Dispose();

blue50.Dispose();

blue100.Dispose();

gr.Dispose();

}


}


catch (Exception exc)

{


Console.WriteLine(exc);

}


finally

{

surface.UnlockRectangle();

}

SetMixerSettings();

}


catch (Exception ex)

{


Console.WriteLine(ex);



Topper


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
57183 Re: Label (u otro contenedor de texto) con fondo transparente (Resp: 57175)29/08/13 08:52sistemas   
Comprueba esto: ¿No será que creaste el label dentro del picturebox?, el picturebox es un contenedor por tanto puede contener otros objetos tal como labels. Borra el label y créalo de nuevo pero asegurándote de créalo fuera del picturebox, pónle su fondo transparente como ya sabes y luego, con botón derecho, ejecuta "Traer el frente", luego muévelo encina del picture box


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
57192 Re: Label (u otro contenedor de texto) con fondo transparente (Resp: 57175)02/09/13 08:40morandeira   
Buenos días...

muchas gracias por vuestras sugerencias. Al final lo arreglé de otra manera.

Creé un FORM sólo para contener al LABEL que quiero con fondo transparente. Le dí un color de fondo al label de forma que FORM.tramsparencykey = LABEL.backcolor.

Luego ubiqué el formulari donde lo quiero, sobre e video, el LABEL.DOCK = FILL, y FORM.BRINGTOFRONT, FORM.TOPMOST=TRUE... y listo, tengo una etiqueta con fondo transparente y funciona perfectamente.

Lo único que he tenido que hacer una pequeña trampa, pero es imperceptible. Al hacerlo así y visualizar el FORM, este queda con el enfoque y cuando interáctúo con el formulario principal de la aplicación tengo que hacer click dos veces (una para que recupere el enfoque y otra para ejecutar la acción deseada del mouse). Así que lo que he hecho es inmediatamente después de hacer visible el FORM con LABEL transparente, hago FORMPRINCIPAL.ACTIVATE...

Para cubrir mi necesidad me llega y sobra y no hace falta complicarse mucho.

De todas formas, muchas gracias por vuestras respuestas.

Un saludo.


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.

 
(c) Guillermo 'guille' Som, 2005-2017  - foros.elGuille v1.0.5.3 (23/Mar/2009 14:50 GMT +1)  - (ASP.NET 2.0 v2.0.50727.8762)
 
Usuarios activos: 98 - App. iniciada: 18/08/2017 14:33:09 GMT - La hora GMT del servidor es: 18/08/2017 18:16:57 GMT