Bueno ya esta, creo que te entendi un 100% veamos...
Puse un dibujo de como me queda a mi, fijate si eso es!!!.
Te comento que se me quemaron las papas varias veces pero porque no acordaba cosas de matematicas, pero eso es drama mio nomas

.
Bueno, lo primero es saber que ahora no trabajo mas con un boton, sino con un PictureBox llamado Boton, Esto es porque cuando queremos mover el boton el Picture movera automaticamente el resto de los objeto que contiene y nos ahorra mucho trabajo

... Despues estableci un Circulo(Shape1) que hara de limite del boton, para el programa es necesario saber si el cursor se encuentra dentro del circulo o fuera, eso se puede averiguar sacando la distancia entre dos puntos o pitagoras (Hasta que me di cuenta, habia descubierto que tambien se podia hacer con la raiz cuadrada de (1 - X^
2) y tomando el dominio e imagen de la funcion entre -1 y 1 y luego la funcion negativa para el resto del circulo pero es ultra complejo) de esta forma queda saber si se anda por una region delimitada como en el ejemplo anterior del boton...
Imagen de como me quedo a mi
Aca va el ejemplo completo...
'<....... .......> Dim Habilitado
As Boolean, Ind
As Byte Dim PosX
As Single, PosY
As Single, CEX
As Single, CEY
As Single, CANT
As Single
Private Sub Boton_Click(Index As Integer)
If (Habilitado = True)
Then If PosY <= CEY
Then
Shape2(Index).Left = LArriba(Index).Left - 120
'Que tome la pos Left del label
Shape2(Index).Top = LArriba(Index).Top
Else If PosX >= CEX
Then
Shape2(Index).Left = LDcha(Index).Left - 120
'Que tome la pos Left del label
Shape2(Index).Top = LDcha(Index).Top
Else
Shape2(Index).Left = LIzq(Index).Left - 120
'Que tome la pos Left del label
Shape2(Index).Top = LIzq(Index).Top
End If End If End If End Sub Private Sub Boton_MouseMove(Index
As Integer, Button
As Integer, Shift
As Integer, X
As Single, Y
As Single)
PosX = X
'Coordenadas del cursor en el Picture
PosY = Y
CEX = Shape1((Index)).Height / 2
'El X del CEntro del Circulo; Ademas establece la medida del Radio del Circulo
CEY = Shape1((Index)).Width / 2
'El Y del Centro del Circulo If CEX >= Sqr((CEX - X) ^ 2 + (CEY - Y) ^ 2)
Then 'Use solo fórmula de distancia a dos puntos o pitagoras
Habilitado = True
'Dice si estas dentro del circulo Else
Habilitado = False
End If End Sub '<..... ..........>
Falta decir que esto es para un control, vos esto lo queres varias veces no?, ok, lo que tenes que hacer es crear el Control Picture, llamado Boton como una matriz de controles, o sea crea un copia del Picture y llamalo de la misma forma en ese instante vb te pedira si queres convertir a matriz de controles y le pones que si, esto te permite crear muchos controles...
para crear controles de forma dinamica agrega lo siguiente
Private Sub Btn_Generar_Click()
Load Boton(Ind + 1)
Ind = Ind + 1
With Boton(Ind)
.Visible = True
.Left = 500
.Top = 1200
End With End Sub Private Sub Form_Load()
Ind = 0
End Sub