Resumen Rectangulo de arrastre   (3 mensajes )

Hector:

Recorta el código que te mando a continuación y pegalo en un formulario con
un PictureBox de nombre Picture1 y prueba a ver si es lo que necesitas. Te
lo envío de esta manera porque no se con que version de VB estas trabajando.

Espero que te sirva.
Suerte.
Peky.


********** Inicio del Código ************
Option Explicit

Private Type TPenStatus
    DrawStyle As Integer
    DrawMode As Integer
    DrawWidth As Integer
    ForeColor As Long
    MousePointer As Integer
End Type

Private Type TControlBox
    X1 As Long
    Y1 As Long
    X2 As Long
    Y2 As Long
    PenStatus As TPenStatus
End Type

Dim CtrlBox As TControlBox

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As
Single, Y As Single)
    If (Button And vbLeftButton) = vbLeftButton Then
        ' Salva el estado inicial
        With CtrlBox
            .X1 = X
            .Y1 = Y
            .X2 = X
            .Y2 = Y
            .PenStatus.DrawStyle = Picture1.DrawStyle
            .PenStatus.DrawMode = Picture1.DrawMode
            .PenStatus.DrawWidth = Picture1.DrawWidth
            .PenStatus.ForeColor = Picture1.ForeColor
            .PenStatus.MousePointer = Picture1.MousePointer
        End With
        With CtrlBox.PenStatus
            Picture1.DrawStyle = vbDot
            Picture1.DrawMode = vbInvert
            Picture1.DrawWidth = 1
            Picture1.ForeColor = 0
            Picture1.MousePointer = vbCrosshair
        End With
        Picture1.Line (CtrlBox.X1, CtrlBox.Y1)-(CtrlBox.X2, CtrlBox.Y2), , B
    End If
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
    If (Button And vbLeftButton) = vbLeftButton Then
        Picture1.Line (CtrlBox.X1, CtrlBox.Y1)-(CtrlBox.X2, CtrlBox.Y2), , B
        CtrlBox.X2 = X
        CtrlBox.Y2 = Y
        Picture1.Line (CtrlBox.X1, CtrlBox.Y1)-(CtrlBox.X2, CtrlBox.Y2), , B
    End If
End Sub

Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As
Single, Y As Single)
    If (Button And vbLeftButton) = vbLeftButton Then
        Picture1.Line (CtrlBox.X1, CtrlBox.Y1)-(CtrlBox.X2, CtrlBox.Y2), , B
        CtrlBox.X2 = X
        CtrlBox.Y2 = Y
        ' restaura el estado del picture
        With CtrlBox.PenStatus
            Picture1.DrawStyle = .DrawStyle
            Picture1.DrawMode = .DrawMode
            Picture1.DrawWidth = .DrawWidth
            Picture1.ForeColor = .ForeColor
            Picture1.MousePointer = .MousePointer
        End With
        ' Desde aquí tienes el valor del rectángulo en CtrlBox.X1, .Y1, .X2
y .Y2
    End If
End Sub
********** Fin del Código ************

------------------------------------------------
e-mail <peky@satlink.com>

>-----Original Message-----
>De: hector (HeDa) <hcormen@delta.cti.unav.es>
>Para: vb-esp@ccc.uba.ar <vb-esp@ccc.uba.ar>
>Fecha: Martes 23 de Diciembre de 1997 10:10
>Asunto: (VB-ESP) Rectangulo de arrastre
>

>Hola. Necesito un poco de ayuda.
>Antes de nada.. muchas gracias por leerme... :)
>
>
>Tengo VB5. Tengo una aplicación en la que sale una imagen con unos
graficos. Quiero hacer un zoom. La >rutina ya esta hecha. Solo me falta
hacer que al hacer la ventana del zoom me salga un rectangulo desde >donde
le di el primer clic hasta el cursor a medida que muevo el raton. me explico
? tiene que ser facil . >pero me pierdo... hay que llamar a alguna API
supongo.
>
>También me interesaría que alguien publicase sus links favoritos de Visual
Basic en esta lista. je je :) Sitios >donde haya ejemplos, tutoriales. etc.
>
>GRACIAS
>________________________________ _ _ _ _ _ _ _ _
>Héctor D. Corcín
>hcormen@arq.cti.unav.es
>http://www.yi.com/home/CorcinHector
>

En cuanto a lo de los enlaces, prueba con éste:
http://www.wcostasol.es/guille/indice

El Las páginas del "Guille" encontrarás de todo (entre otras cosas, más
enlaces).

Antes que se me olvide: Gracias, Guille, si me lees, por tu esfuerzo.

En cuanto a lo del rectángulo del Zoom:

Yo probaría a hacerlo así (sin funciones API):

Pare hacer el rectángulo, puedes usar un control Shape (que se haría
visible o no), o mejor aún, la función Line (en MiPicture_Paint).
Tienes que usar los eventos MouseDown, MouseMove y MouseUp, y tres
variables a nivel de módulo:

Private bMMostrar as Boolean
Private lnMX as Long
Private lnMY as Long

Luego:

En MiPicture_MouseDown:
    If Button = 1 Then
        bMMostrar = True
        lnMX = X
        lnMY = Y
    End If

En MiPicture_MouseUp:
    bMMostrar = False
    MiZoom 'Incluye MiPicture_Paint

En MiPicture_MouseMove:
    If bMMostrar Then MiPicture_Paint

En MiPicture_Paint
    If bMMostrar Then
        MiPicture.Line (lnMX, lnMY)-(X, lnMY)
        MiPicture.Line (lnMX, lnMY)-(lnMX, Y)
        MiPicture.Line (X, lnMY)-(lnMX, lnMY)
        MiPicture.Line (lnMX, Y)-(lnMX, lnMY)
    End If


Con algo así supongo que funcionaría más o menos, aunque puede hacerlo a
saltos.

Otra posibilidad sería simular el rectángulo con Drag and Drop, pero ahí ya
me pierdo, lo tendría que probar antes.

Si usas un control Image, debes incluírlo en un control Picture y poner
MiImage.Enabled = False, para poder usar el método Line.

Espero que te sirva de algo. Un saludo y Feliz Navidad.

Luis Sanz
HOSPITAL REINA SOFIA DE TUDELA
31500 TUDELA
NAVARRA
Teléfono: 948-827500
Fax: 948- 825906
E-Mail: hrst@ctv.es

----------
> De: hector (HeDa) <hcormen@delta.cti.unav.es>
> A: vb-esp@ccc.uba.ar
> Asunto: (VB-ESP) Rectangulo de arrastre
> Fecha: martes 23 de diciembre de 1997 7:03
>
> Hola. Necesito un poco de ayuda.
> Antes de nada.. muchas gracias por leerme... :)
>
>
> Tengo VB5. Tengo una aplicación en la que sale una imagen con unos
graficos. Quiero hacer un zoom. La rutina ya esta hecha. Solo me falta
hacer que al hacer la ventana del zoom me salga un rectangulo desde donde
le di el primer clic hasta el cursor a medida que muevo el raton. me
explico ? tiene que ser facil . pero me pierdo... hay que llamar a alguna
API supongo.
>
> También me interesaría que alguien publicase sus links favoritos de
Visual Basic en esta lista. je je :) Sitios donde haya ejemplos,
tutoriales. etc.
>
> GRACIAS
> ________________________________ _ _ _ _ _ _ _ _
> Héctor D. Corcín
> hcormen@arq.cti.unav.es
> http://www.yi.com/home/CorcinHector

Héctor escribió:

> Tengo VB5. Tengo una aplicación en la que sale una imagen con unos
graficos. Quiero hacer un zoom. La rutina ya esta hecha. Solo me falta
hacer que al hacer la ventana del zoom me salga un rectangulo desde donde
le di el primer clic hasta el cursor a medida que muevo el raton. me
explico ? tiene que ser facil . pero me pierdo...


Mira. Hice mi tarea B-) y se me ocurió algo como esto, espero que te sea
útil. Para que funcione, debes colocar en un formulario una figura (shape)
con las siguientes propiedades: BorderStyle = 3-Dot, Shape = 0 - Rectangle y
el nombre predeterminado (Shape1).

********************************************
Option Explicit

Private Sub Form_Load()
  ' Establezca los valores iniciales de la figura.
  Shape1.Tag = ""
  Shape1.Visible = False
  Shape1.Move 0, 0, 0, 0
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single,
Y As Single)
  With Shape1
    ' Verifique si la opresión del botón está dentro o fuera
    ' de los límites de la figura. Si está fuera, iníciese,
    ' entonces, el dibujo de una nueva figura. Si está dentro
    ' entonces no lo haga y avísele al procedimiento acorde que
    ' no haga ningún movimiento.
    If (X < .Left Or X > .Left + .Width) Or (Y < .Top Or Y > .Top + .Height)
And .Visible Then
      .Visible = False
      .Tag = ""
    Else
      .Tag = "Trasladar"
    End If
  End With
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single,
Y As Single)
  If Button And vbLeftButton Then
    With Shape1
      ' ¿Está visible la figura?
      If Not .Visible Then
        .Visible = True
        .Move X, Y, 0, 0
      End If

      ' ¿Debe realizar el efecto de dimensionamiento?
      If .Tag = "" Then
        If (X - .Left) >= 0 And (Y - .Top) >= 0 Then
          .Width = (X - .Left)
          .Height = (Y - .Top)
        End If
      End If
    End With
  End If
End Sub
******************************************

Creo que hará bien el trabajo...

+¡Saludos desde México!+
| |
| .+'~~'+. |
| * Tron * David.BAS |
| `+,__,+' |
| |
+-adgarza@spin.com.mx--+



Resumen Resumen

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com