Hola, soy nuevo en el foro y necesito ayuda, lo que quiero es si me podrían ayudar... recientemente cree un skin/tema para mi programa mediante photoshop pero no se como ponerlo, lo que yo quiero es poner esa imagen de photoshop como si fuera la form... no se si me explico... Gracias a todos.. :-X
Podrias ponerle la propiedad del form
BorderStyle = 0
y luego implementar tu fondo en
Me.Picture = App.Path & "\nombrefoto.Jpg"
o bien podes realizarlo en modo de diseño.
Si haces esto tenes que manipular algunas apis en conjunto para lograr el arrastre de la ventana desde alguna parte de tu imagen porque al ponerle el estilo de borde en 0 no vas a poder mover el form sin aplicar codigo.
Saludos.
Lo hice en modo diseño y tengo el codigo para moverlo, el problema es que siendo una imagen png en el visual studio 2013 no deja poner el fondo transparente por lo tanto lo que deberia ser transparente se ve blanco... Ahora probare con el visual studio 2010 haber si me deja poner esa opcion... PD: los codigos que me diste como los aplicaria en el codigo... Pongo #Region "Themebase" Aqui la base de aeonshack #EndRegion. Y tu codigo, no necesito nada mas?
Como esta en visual basic, asumi que era en Vb6, en Vb.NET (actualmente uso 2012, en el 2010 creo que era igual)
La propiedad de tu imagen en modo diseño es en
BackGroundImage
Ahi colocas la imagen que hiciste.
Para "desaparecer" los botones y dejar el form completamente sin bordes ni nada usa
En form load (tambien modificas en modo diseño, como gustes)
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
Si mal no recuerdo con esas propiedades dejas el Form sin nada con tu imagen en el.
Saludos.
Cita de: XresH en 12 Septiembre 2014, 06:27 AM
Como esta en visual basic, asumi que era en Vb6, en Vb.NET (actualmente uso 2012, en el 2010 creo que era igual)
La propiedad de tu imagen en modo diseño es en
BackGroundImage
Ahi colocas la imagen que hiciste.
Para "desaparecer" los botones y dejar el form completamente sin bordes ni nada usa
En form load (tambien modificas en modo diseño, como gustes)
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
Si mal no recuerdo con esas propiedades dejas el Form sin nada con tu imagen en el.
Saludos.
Si los bordes tambien se pueden quitar desde la configuracion la cosa es que con una imagen png quede lo que era transparente en photoshop transparente en visual studio... porque me queda blanco.
A ver si este código te funciona, lo tengo en un proyecto que la imagen tiene una forma distinta (a la de los form tradicionales) pero no posee partes transparentes, fijate si te sirve para lo que necesitas, de lo contrario podrias intentar codearlo para que haga lo que decis, en este caso coloco una imagen y el form adapta la forma de la misma, el code no lo hice yo y no recuerdo de donde lo saque ya que fue hace mucho tiempo:
Public Class Form1
Inherits System.Windows.Forms.Form
Dim Arrastre As Boolean
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim imagen As Image = Bitmap.FromFile("C:\url.jpg")
Me.BackgroundImage = imagen
Me.Height = imagen.Height
Me.Width = imagen.Width
Dim mibitmap As Bitmap = CType(imagen, Bitmap)
Me.Region = ObtenerRegionDelBitmap(mibitmap, mibitmap.GetPixel(0, 0))
End Sub
Private Function ObtenerRegionDelBitmap(ByVal MiImagen As Bitmap, ByVal ColorTransparente As Color) As Region
Dim RegionLocal As Region
If MiImagen Is Nothing Then Return RegionLocal
Dim ColorDeFondo As Color = ColorTransparente
Dim Largo As Integer = MiImagen.Height - 1
Dim Ancho As Integer = MiImagen.Width
Dim Fila As Integer
Dim Columna As Integer
RegionLocal = New Region(New Rectangle(0, 0, 0, 0))
For Fila = 0 To Largo
Dim ColumnaComienzo As Integer = -1
Dim ColumnaFin As Integer = -1
For Columna = 0 To Ancho
If Columna = Ancho Then
If ColumnaComienzo <> -1 Then
ColumnaFin = Columna
Dim regUnion As New Region(New Rectangle(ColumnaComienzo, Fila, ColumnaFin - ColumnaComienzo, 1))
RegionLocal.Union(regUnion)
regUnion = Nothing
End If
Else
If Not MiImagen.GetPixel(Columna, Fila).Equals(ColorDeFondo) Then
If ColumnaComienzo = -1 Then ColumnaComienzo = Columna
ElseIf MiImagen.GetPixel(Columna, Fila).Equals(ColorDeFondo) Then
If ColumnaComienzo <> -1 Then
ColumnaFin = Columna
Dim regUnion As New Region(New Rectangle(ColumnaComienzo, Fila, ColumnaFin - ColumnaComienzo, 1))
RegionLocal.Union(regUnion)
regUnion = Nothing
ColumnaComienzo = -1
ColumnaFin = -1
End If
End If
End If
Next
Next
Return RegionLocal
End Function
Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
Arrastre = True
End Sub
Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp
Arrastre = False
End Sub
Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
If Arrastre Then Me.Location = Me.PointToScreen(New Point(e.X, e.Y))
End Sub
End Class
El unico parametro que tenes que modificar es el de la ubicacion del archivo en cuestion:
Dim imagen As Image = Bitmap.FromFile("C:\url.jpg")
Despues si tenes distinto el nombre del form bueno eso esta demas decirlo.
Espero te sirva.
Casi casi, ahora se ve transparente pero puse la url de la imagen pero se siguen biendo pequeñas partes donde no es transparente el fondo, es blanco´...
Te mando una imagen..(la imagen es png)
(http://www.subeimagenes.com/img/capturada-1089827.jpg)
Hola, ante todo y me gustaría la opinión de otros moderadores u otros usuarios, los temas de .net irían en esta sección
tomando el hilo del tema, no se mucho de .net pero recuerdo alguna vez que tenia una propiedad para hacer esto, al margen de esto es lo mismo que hacerlo con el api SetLayeredWindowAttributes
ahora sea con SetLayeredWindowAttributes o con Regiones, no te va a quitar esos bordes porque no son blancos, quitandolos no queda muy lindo ya que te va a quedar todo muy pixelado, y las sombras inferiores olvídate.
para hacer un skin de este tipo tenes que recurrir a el api UpdateLayeredWindow, si la googleas con vas a encontrar ejemplos para .net