Area Rectangular en HTML
by Ciberwalter

Fecha: 23/Ene/2004 (22 de Enero del 2004)
Autor: Walter Martínez O.
waltermilenium@hotmail.com
http://www.geocities.com/gnivel4


Este Ejemplo te permite crear Areas Rectangulares para usarse como un Vínculo, (los conocidos "Area Map Rect"), los cuales pueden ubicarse en cualquier región de una imagen determinada.
La gran alternativa que posee, es que se puede agrandar o achicar desde los cuadros que se encuentran en los extremos. para hacernos una idea de cómo se vería este Vínculo, Haz Click en los ojos del Personaje, (la imagen muestra el programa en sí).

A continuación sigue código en Visual Basic (Sólo detallaré lo mas importante):

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

    Create.Enabled = True

''' Hacemos los cuadros de las esquinas invisibles
 
    IzUp.Visible = False
    DerUp.Visible = False
    IzDown.Visible = False
    DerDown.Visible = False
 
    shCapture.Visible = True
    shCapture.Left = X
    shCapture.Top = Y
    shCapture.Height = 0
    shCapture.Width = 0

    miStartX = X
    miStartY = Y
''' Dejamos el valor Operacion como Verdadero para 
''' que pueda realizarse el cuadro

    Operacion = True
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Operacion = True Then

''' A Medida que el cursor se mueve, crea el cuadro en el Formulario

  shCapture.Left = -miStartX * (X > miStartX) - X * (X <= miStartX)
  shCapture.Top = -miStartY * (Y > miStartY) - Y * (Y <= miStartY)
  shCapture.Width = Abs(miStartX - X)
  shCapture.Height = Abs(miStartY - Y)
End If
End Sub

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

    Operacion = False

''' Al Soltar el cursor establece el cuadro y coloca 
''' los modificadores en las cuatro esquinas.


    IzUp.Visible = True
    IzUp.Left = shCapture.Left - IzUp.Width
    IzUp.Top = shCapture.Top - IzUp.Height

    DerDown.Visible = True
    DerDown.Left = shCapture.Left + shCapture.Width
    DerDown.Top = shCapture.Top + shCapture.Height

    IzDown.Visible = True
    IzDown.Left = shCapture.Left - IzDown.Height
    IzDown.Top = shCapture.Top + shCapture.Height

    DerUp.Visible = True
    DerUp.Left = shCapture.Left + shCapture.Width
    DerUp.Top = shCapture.Top - DerUp.Height

''''''''''''''''''''''''''''''''''''''''''''''''''''''
'' COORDENADAS

''' Primero lleva la escala al Valor de "Pixeles" (3) para poder 
''' realizar las coordenadas

   Form1.ScaleMode = 3
''' establece las coordenadas en los TextBox
   Text1 = shCapture.Left
   Text5 = shCapture.Top
   Text2 = shCapture.Left + shCapture.Width
   Text6 = shCapture.Top
   Text3 = shCapture.Left
   Text7 = shCapture.Top + shCapture.Height
   Text4 = shCapture.Left + shCapture.Width
   Text8 = shCapture.Top + shCapture.Height
''' y devuelve la escala al valor "Twip" (1) para que no haya conflicto 
''' con los modificadores.

Form1.ScaleMode = 1

End Sub


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''' Funciones Agrandar Cuadro de Selección '''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Private Sub IzUp_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
   OperacionIzUp = True
End Sub

''' Para Usar los modificadores, debemos Asignar una sentencia 
''' específica a cada modificador, para que sus equivalentes
''' se muevan junto con él
''' este es el modificador del lado Izquierdo-Arriba
Private Sub IzUp_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

On Error GoTo SaltoIzUp

If OperacionIzUp = True Then
      IzUp.Left = IzUp.Left + X
      IzUp.Top = IzUp.Top + Y
      IzDown.Left = IzDown.Left + X ' junto con el se mueve el Izquiedo-Abajo
      DerUp.Top = DerUp.Top + Y     ' y el Derecho-Arriba
'''''''''''''''''''''''''''''''''''''''''''''
''' Y Además modifica el tamaño y la posición del cuadro

      shCapture.Top = IzUp.Top + IzUp.Height
      shCapture.Left = IzUp.Left + IzUp.Width
      shCapture.Height = IzDown.Top - (IzUp.Top + IzUp.Height)
      shCapture.Width = DerUp.Left - (IzUp.Left + IzUp.Width)
'''''''''''''''''''''''''''''''''''''''''''''

''''''''''''''''''''''''''''''''''''''''''''''''''''''
'' COORDENADAS
'' Otra vez cambia el modo a pixeles y crea las coordenadas.

    Form1.ScaleMode = 3

    Text1 = shCapture.Left
    Text5 = shCapture.Top
    Text2 = shCapture.Left + shCapture.Width
    Text6 = shCapture.Top
    Text3 = shCapture.Left
    Text7 = shCapture.Top + shCapture.Height
    Text4 = shCapture.Left + shCapture.Width
    Text8 = shCapture.Top + shCapture.Height

    Form1.ScaleMode = 1
End If

Exit Sub
'' este escape funciona cuando tratas de achicar tanto el cuadro,
'' que se invierte y provoca una resta incoherente, produciendo un error
'' SI NO ME CREES BORRA LA OPCION "ON ERROR GOTO SaltoIzUp" para que veas

    SaltoIzUp:
        OperacionIzUp = False
End Sub

Al momento de abrir el programa, podrías incluir un botón para cambiar la imagen (por ejemplo).

Su utilización es muy fácil: sólo abres una imagen específica y dibujas un cuadrado en el Area que deseas, luego lo dimensionas a tu gusto, completas los casilleros "Imagen" y "HiperVinculo" según tus opciones y pulsas el botón "Generar Código". Luego copias el código que te entrega y lo pegas en una página web (*.htm) si sabes programar en HTML te será muy FÁCIL.


ir al índice

Descarga el Fichero con el Código de ejemplo y el Ejecutable ("Ciberwalter_AreaRect.zip" - Tamaño 77.5 KB)