Option Explicit
Public Sub Boton(PictureKE As PictureBox, Formulario As Form, Ancho As Single, Alto As Single, _
PosX As Single, PosY As Single, Color_Borde As Long, Optional Color_Fondo_PictureKE As Long = vbBlack, _
Optional Texto As String = "", Optional Tamaño_Letra As Integer = 9, Optional Color_Texto As Long = vbWhite, _
Optional X_MOV As Single = 0, Optional Y_MOV As Single = 0, Optional Color_Fondo_Boton As Long = vbBlack, _
Optional Color_Fondo_Boton2 As Long = vbYellow, _
Optional Color_Texto2 As Long = vbRed, Optional Color_Fondo_Boton3 As Long = vbYellow, _
Optional Color_Texto3 As Long = vbMagenta, Optional Click_Down As Boolean = False)
'X_MOV y Y_MOV son las coordenadas del mouse, estas variables se activaran en el evento mouse move del picture, mientras
'estaran con valor = 0
'Color_Fondo_Boton2 es el color que toma el fondo del boton cuando el mouese esta sobre él
'Color_Texto2 es el color que toma el texto cuando el mouese esta sobre el boton
'Color_Fondo_Boton3 es el color que toma el fondo del boton cuando se ejecuta Mouse Down
'Color_Texto3 es el color que toma el texto cuando se ejecuta Mouse down
'Click_Down es True en el momento que se ejecute el evento Mouse_Down del picture
'Click_Up es True en el momento que se ejecute el evento Mouse_Up del picture
'acomodando el pcicture
'Call Acomodando_Picture(PictureKE, Formulario)
Dim Long_Texto As Single 'Longitud del texto
Dim Alt_Texto As Single 'Altura del texto
Long_Texto = PictureKE.TextWidth(Texto)
Alt_Texto = PictureKE.TextHeight(Texto)
'Cambiando el color de fondo del boton, si el mouese esta sobre el boton
If X_MOV >= PosX And X_MOV <= (PosX + Ancho) And Y_MOV >= PosY And Y_MOV <= (PosY + Alto) Then
PictureKE.Line (PosX, PosY)-(PosX + Ancho, PosY + Alto), Color_Fondo_Boton2, BF
'escribimos el texto siempre y cuando quepa dentro del boton
If Long_Texto < Ancho And Alt_Texto < Alto Then
Call Escribir_Texto_V2(PictureKE, Color_Fondo_PictureKE, Tamaño_Letra, PosX + Ancho / 2 - Long_Texto / 2, PosY + Alto / 2 - Alt_Texto / 2, Color_Texto2, Texto)
End If
'Cambiando el color del boton si hay click
If Click_Down = True Then
PictureKE.Line (PosX, PosY)-(PosX + Ancho, PosY + Alto), Color_Fondo_Boton3, BF
'escribimos el texto siempre y cuando quepa dentro del boton
If Long_Texto < Ancho And Alt_Texto < Alto Then
Call Escribir_Texto_V2(PictureKE, Color_Fondo_PictureKE, Tamaño_Letra, PosX + Ancho / 2 - Long_Texto / 2, PosY + Alto / 2 - Alt_Texto / 2, Color_Texto3, Texto)
End If
End If
Else
'restableciendo el fondo del boton
PictureKE.Line (PosX, PosY)-(PosX + Ancho, PosY + Alto), Color_Fondo_Boton, BF
'escribimos el texto siempre y cuando quepa dentro del boton (Boton normal)
If Long_Texto < Ancho And Alt_Texto < Alto Then
Call Escribir_Texto_V2(PictureKE, Color_Fondo_PictureKE, Tamaño_Letra, PosX + Ancho / 2 - Long_Texto / 2, PosY + Alto / 2 - Alt_Texto / 2, Color_Texto, Texto)
End If
End If
'dibujando el borde exterior
PictureKE.Line (PosX, PosY)-(PosX + Ancho, PosY + Alto), Color_Borde, B
End Sub
Sub Escribir_Texto_V2(PictureKE As PictureBox, Color_PictureKE As Long, TamañoLetra As Integer, _
PosX As Single, PosY As Single, Color_Texto As Long, Texto As String, Optional ByRef Delta_X As Single)
Dim Delta_X_OLD As Single
Delta_X_OLD = Delta_X
'Delta_X es la coordenada X donde se termina de escribir la palabra
'Texto es la palabra escrita
PictureKE.PSet (PosX, PosY), Color_PictureKE
PictureKE.ForeColor = Color_Texto
PictureKE.FontSize = TamañoLetra
PictureKE.Print Texto;
Delta_X = PictureKE.CurrentX
If Delta_X < Delta_X_OLD Then
Delta_X = Delta_X_OLD
End If
End Sub
Public Sub Acomodando_Picture(PictureKE As PictureBox, Formulario As Form)
'Acomoda el picture en el form
With PictureKE
.Top = 0
.Left = 0
.Width = Formulario.ScaleWidth
.Height = Formulario.ScaleHeight
.BackColor = vbBlack
.AutoRedraw = True
End With
End Sub