Autor
|
Tema: [AYUDA]Crear skin con imagen png/bitmap/jpeg(GDI+) (Leído 4,278 veces)
|
Kyan
Desconectado
Mensajes: 7
|
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..
|
|
|
En línea
|
|
|
|
XresH
|
Podrias ponerle la propiedad del formBorderStyle = 0
y luego implementar tu fondo enMe.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.
|
|
|
En línea
|
|
|
|
Kyan
Desconectado
Mensajes: 7
|
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?
|
|
« Última modificación: 12 Septiembre 2014, 00:32 am por Kyan »
|
En línea
|
|
|
|
XresH
|
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 enBackGroundImage
Ahi colocas la imagen que hiciste.
Para "desaparecer" los botones y dejar el form completamente sin bordes ni nada usaEn 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.
|
|
|
En línea
|
|
|
|
Kyan
Desconectado
Mensajes: 7
|
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 enBackGroundImage
Ahi colocas la imagen que hiciste.
Para "desaparecer" los botones y dejar el form completamente sin bordes ni nada usaEn 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.
|
|
|
En línea
|
|
|
|
XresH
|
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.
|
|
|
En línea
|
|
|
|
Kyan
Desconectado
Mensajes: 7
|
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)
|
|
|
En línea
|
|
|
|
LeandroA
|
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
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Crear Skin
Diseño Gráfico
|
Leoj90
|
0
|
1,800
|
1 Octubre 2005, 00:10 am
por Leoj90
|
|
|
crear Skin para visual Basic
Programación Visual Basic
|
Banker25
|
1
|
2,371
|
15 Abril 2008, 01:08 am
por seba123neo
|
|
|
Skin - Un Skin que se crea en tiempo de ejecucion usando Objetos Shape y Label
Programación Visual Basic
|
EddyW
|
0
|
2,029
|
30 Enero 2010, 06:52 am
por EddyW
|
|
|
crear una imagen de windows "instalable" con programas ya incluidos en la imagen
Windows
|
mariaperreta
|
2
|
5,291
|
19 Marzo 2013, 03:14 am
por Platanito Mx
|
|
|
JPEG XS: nuevo formato de imagen sin pérdidas optimizado para el 5G, VR y WiFi
Noticias
|
wolfbcn
|
0
|
3,166
|
11 Abril 2018, 14:35 pm
por wolfbcn
|
|