El Arte De Crear Lo Nuevo
 
ÍndiceCalendarioGaleríaFAQBuscarMiembrosGrupos de UsuariosRegistrarseConectarse
Ultra-Cheats Anuncio

Comparte | 
 

 [Taller] Crear Botón Transparente Con Un PictureBox

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
ViRuS-DoKtOr
Administrator
Administrator
avatar

Posts : 85
UC Reputacion : 226
Agradecimientos : 6
Fecha de inscripción : 01/06/2009
Edad : 22
Localización : Venezuela

MensajeTema: [Taller] Crear Botón Transparente Con Un PictureBox   Lun Jun 15, 2009 4:56 pm

Este ejemplo se puede utilizar cuando se tiene en una imagen de fondo o background en el formulario, y poder dar un efecto de transparencia a los botones del programa

Los Commandutton están hechos utilizando un picturebox, y se dibuja mediante la función paintpicture, el área del gráfico de fondo , osea del formulario, y también se le dibuja un texto y el movimiento del botón al presionarlo ( esto último moviendo la posición top y left del picturebox )




Ejemplo

1 - Agregar un módulo de clase ( dejarlo con el nombre Class1)
2 - Agregar dos controles Picturebox ( Picture1 y picture2)
3 - Cargarle un gráfico de fondo al formulario
4 - Establecerle luego, en el método init, las propiedades para cada botón: ( El caption, el color de la fuente y los colores del borde )


Nota: no se puede pasar como parámetro al método Init, un picturebox que forme una matriz o arreglo de controles Picture, es decir esto daría error:

Citación :
Call PicTransparente1.Init(Picture1(0), ....demás parámetros )

Código fuente en el formulario :

Citación :
Option Explicit

' Variables para crear los picturebox transparentes
Private PicTransparente1 As Class1
Private PicTransparente2 As Class1


Private Sub Form_Load()


' Crea dos instancias
Set PicTransparente1 = New Class1
Set PicTransparente2 = New Class1

' crea dos picturebox
Call PicTransparente1.Init(Picture1, " Entrar ", &HFFFFFF, _
10, &H80C0FF, &HFFC0C0, &HC0FFC0)

Call PicTransparente2.Init(Picture2, "Salir", vbWhite, 10, _
&H80C0FF, &HC0C0C0, &HC0FFC0)


End Sub

Private Sub Picture1_Click()
MsgBox "Entrar", vbInformation
End Sub

Private Sub Picture2_Click()
If MsgBox("Salir ?", vbOKCancel + vbQuestion) = vbOK Then
End
End If
End Sub

Código fuente del módulo de clase ( Class1 ) :

Citación :
Option Explicit


' Variable de tipo Picturebox declarada con evento
Private WithEvents m_PictureBox As PictureBox

' variables
Dim m_texto As String
Dim m_Izq As Single
Dim m_top As Single
Dim m_FontColor As Long
Dim m_FontColorDown As Long
Dim m_BorderColorUp As Long
Dim Old_Scale_Pic As Integer
Dim Old_Scale_Form As Integer
Dim m_BorderColorDown As Long
Dim BorderColorUp As Long

' Inicia : crea el picturebox , creando el fondo y el texto y las propiedades
'********************************************************************
Sub Init(El_Picturebox As PictureBox, _
Caption As String, _
FontColor As Long, _
FontSize As Integer, _
FontColorDown As Long, _
BorderColorUp As Long, _
BorderColorDown As Long)

' Si no se creó la instancia, entonces la crea
If m_PictureBox Is Nothing Then

' REferencia al picture
Set m_PictureBox = El_Picturebox


' Propiedades varias
With m_PictureBox


.BorderStyle = 0
' Opcional: texto en negrita
'.Font.Bold = True

' Color de la fuente del texto
.ForeColor = FontColor

'Tamaño de la fuente
.FontSize = FontSize

' Variables que almacenan los colores para la fuente _
cuando está normal y cuando se presiona el Picturebox
m_FontColor = FontColor
m_FontColorDown = FontColorDown
m_BorderColorUp = BorderColorUp
m_BorderColorDown = BorderColorDown
End With

' Mantiene el caption para el botón
m_texto = Caption

' Crea elñ Botón
Call Crear_Boton_Transparente
End If

End Sub

Private Function Crear_Boton_Transparente()

' Variable para hacer referencia al formulario _
que contiene al picturebox
Dim Formulario As Form

Set Formulario = m_PictureBox.Parent

' Autoredraw y el modo de escala para el picture y el formulario
Formulario.AutoRedraw = True

Old_Scale_Form = Formulario.ScaleMode
Formulario.ScaleMode = vbCharacters

m_PictureBox.AutoRedraw = True

Old_Scale_Pic = m_PictureBox.ScaleMode
m_PictureBox.ScaleMode = vbCharacters

' Dibuja el fondo en el picture
m_PictureBox.PaintPicture Formulario.Picture, 0, 0, _
, , m_PictureBox.Left, m_PictureBox.Top

m_PictureBox.Line (0, 0)-Step(m_PictureBox.ScaleWidth - 0.1, _
m_PictureBox.ScaleHeight - 0.1), m_BorderColorUp, B

' Dibuja el texto
Call Dibujar_texto

Formulario.ScaleMode = Old_Scale_Form
m_PictureBox.ScaleMode = Old_Scale_Pic
End Function

' Dibuja el caption en el control picture
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Private Function Dibujar_texto()

Dim Centro_Picturebox_x As Single
Dim Centro_Picturebox_y As Single

' calcula el centro
Centro_Picturebox_x = m_PictureBox.TextWidth(m_texto) / 2
Centro_Picturebox_y = m_PictureBox.TextHeight(m_texto) / 2

' posición x para dibujar el texto
m_PictureBox.CurrentX = m_PictureBox.ScaleWidth / 2 - Centro_Picturebox_x

' posición y
m_PictureBox.CurrentY = m_PictureBox.ScaleHeight / 2 - Centro_Picturebox_y

' Dibuja el texto en la coordenada
m_PictureBox.Print m_texto


End Function

'Eventos MouseDown y MouseUp
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub m_PictureBox_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)


Old_Scale_Pic = m_PictureBox.ScaleMode
Old_Scale_Form = m_PictureBox.Parent.ScaleMode

m_PictureBox.ScaleMode = vbCharacters
m_PictureBox.Parent.ScaleMode = vbCharacters

' Cambia el color de la fuente
m_PictureBox.ForeColor = m_FontColorDown

m_PictureBox.Line (0, 0)-Step(m_PictureBox.ScaleWidth - 0.1, _
m_PictureBox.ScaleHeight - 0.1), m_BorderColorDown, B


' Vuelve a dibujar el caption
Call Dibujar_texto

' Mantiene el valor para luego restaurar la posición
m_Izq = m_PictureBox.Left
m_top = m_PictureBox.Top

' Mueve el picture para dar el efecto de botón presionado
m_PictureBox.Left = m_PictureBox.Left + 0.2
m_PictureBox.Top = m_PictureBox.Top + 0.05

' restaura la escala del form y del picturebox
m_PictureBox.Parent.ScaleMode = Old_Scale_Form
m_PictureBox.ScaleMode = Old_Scale_Pic

End Sub

Private Sub m_PictureBox_MouseUp(Button As Integer, Shift As Integer, _
X As Single, Y As Single)


' Cuarda la escala
Old_Scale_Pic = m_PictureBox.ScaleMode
Old_Scale_Form = m_PictureBox.Parent.ScaleMode

' cambia la escala
m_PictureBox.ScaleMode = vbCharacters
m_PictureBox.Parent.ScaleMode = vbCharacters

m_PictureBox.Line (0, 0)-Step(m_PictureBox.ScaleWidth - 0.1, _
m_PictureBox.ScaleHeight - 0.1), m_BorderColorUp, B

' Cambia el color de la fuente
m_PictureBox.ForeColor = m_FontColor

' Vuelve a dibujar el caption
Call Dibujar_texto

' Restaura la posición x / y al soltar
m_PictureBox.Left = m_Izq
m_PictureBox.Top = m_top

' restaura la escala
m_PictureBox.Parent.ScaleMode = Old_Scale_Form
m_PictureBox.ScaleMode = Old_Scale_Pic


End Sub


Espero Que Les Halla Gustado Este Taller !

Salu2 !
Volver arriba Ir abajo
Ver perfil de usuario http://ultra-cheats.coolbb.net
 
[Taller] Crear Botón Transparente Con Un PictureBox
Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.
 Temas similares
-
» [Taller] Fabrica de heroes
» Taller de coches, cosechadoras, TRACTORES AMARILLOS XD... LO QUE SEA para usar en MRO XD
» traducción manual SDK a español- crear mapas, repaints etc
» crear grupo facebook
» [Tutorial] Crear una Cinemática

Permisos de este foro:No puedes responder a temas en este foro.
| Ultra-Cheats | 2009 :: Talleres-
Cambiar a: