Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: MicroHack en 10 Febrero 2011, 18:24 pm



Título: PictureBox VB.NET [Tranparencia Imagen]
Publicado por: MicroHack en 10 Febrero 2011, 18:24 pm
Actualmente tengo un control PictureBox dentro de un Form con una imagen (PNG).

El problema es que esa imagen tiene transparencia pero al cargarla en el picturebox el control rellena esa transparencia con un color solido gris y de esta forma me tapa ese fondo que tiene debajo el control.

He probado con imagenes GIF tambien, he modificado la propiedad Background Color en Transparent y Backround Image en "none" pero fail.

En principio no era una prioridad solucionarlo pero he llegado en la parte del proyecto donde me va hacer falta mas de un control picturebox y voy a hacer un copy&paste, asi que prefiero tenerlo resuelto antes que luego tener que modificar los 70 controles.

Alguien sabe como se hace?


EDIT: Acabo de descubrir esto:

RgAxaZEH-cI


Dice que la tranparencia de una imagen PNG dentro de Windows Form es "falsa" puesto que solo tiene en cuenta la capa de imagen del formulario, no de la imagen que tiene entremedia, por ejemplo la imagen que pone en el video como ejemplo donde se ve claramente que no es tomada en cuenta.

¿Alguna solucion a ello?


Título: Re: PictureBox VB.NET [Tranparencia Imagen]
Publicado por: seba123neo en 11 Febrero 2011, 03:59 am
Hola, si es un pequeño problemita jeje, pero una de las soluciones que vi por ahi y funciono, es esta:

Código
  1.    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
  2.        MyBase.OnPaint(e)
  3.        For Each MyObject As PictureBox In Me.Controls.OfType(Of PictureBox)()
  4.            If Not IsNothing(MyObject.Image) And MyObject.Visible = True Then
  5.                e.Graphics.DrawImageUnscaled(New Bitmap(MyObject.Image), MyObject.Left, MyObject.Top)
  6.            End If
  7.        Next
  8.    End Sub

saludos.


Título: Re: PictureBox VB.NET [Tranparencia Imagen]
Publicado por: sentinel13 en 25 Mayo 2011, 02:07 am
hola mira para hacer transparencias es muy facil y se hace asi

1. Le pones un color  a la propiedad backcolor del form digamos negro

2. Le pones el mismo color de la propiedad backcolor a la propiedad transparencykey

3. cargas un picturebox
4. le asignas la imagen en formato png que tu quieras, solo que ten cuidado con los colores ya que si los colores son  iguales o similares a la imagen estos tambien se haran invisible ya que la propiedad transparencykey es hacer invisibles todos los sectores que coinciden con el color seleccionado a hacer transparante.

5. listo ya esta....

NOTA:
Tambien podes omitir insertar un picturebox y cargarselo directamente al form en la propiedad: backgroundimage

cualquier duda escribeme al: deskpdesk4862@hotmail.com

por si no lo entendiste o tienes dudas, con gusto te explico, que ahorita ando corto de tiempo