Resultados 1 al 14 de 14

Gráficos en VB

  1. #1 Gráficos en VB 
    Avanzado
    Fecha de ingreso
    Feb 2004
    Ubicación
    Valencia
    Mensajes
    312
    Descargas
    0
    Uploads
    0
    Buenas... resulta que estoy haciendo un proyecto en VB y yo de VB no tengo mucha idea, la cuestión es la siguiente...

    El programa crea lineas, por medio del evento line y mediante coordenadas creas las que te interesan...ahora bien me gustaría poder mover las figuras creadas..pero no sé numerar cada linea para luego más tarde poder moverlas, es decir, si se le aplica un movimiento mediante coordenada, coger todas las lineas y moverlas...no se si me explico bien.

    Aqui pongo parte del código
    Private Sub crear_Click()
    Monitor.Line (creax1, creay1)-(creax2, creay2), vbBlack
    End Sub
    Private Sub move_Click()
    vx1 = x1.Text
    vy1 = y1.Text
    Monitor.Cls
    Monitor.Line (creax1 - vx1, creay1 - vy1)-(creax2 - vx1, creay2 - vy1), vbBlack
    End Sub
    Gracias de Antemano
    Última edición por welvis30; 03-04-2007 a las 10:32
    Normas de Hackhispano


    El olvido es el peor error que puede cometerse, pero es la mejor solución a muchos de los males
    Citar  
     

  2. #2  
    Avanzado
    Fecha de ingreso
    Feb 2004
    Ubicación
    Valencia
    Mensajes
    312
    Descargas
    0
    Uploads
    0
    Después de luchar durante unas horas descubrí que lo mejor era hacer una array con un contador, pongo aquí el código

    Código:
    Dim contador As Integer
    Dim coordenada(1 To 20, 1 To 4) As Integer
    
    Dim x1 As Integer
    Dim x3 As Integer
    Dim y1 As Integer
    Dim y2 As Integer
    Private Sub borrar_Click()
    Monitor.Cls
    contador = 0
    lineas.Caption = contador
    End Sub
    
    Private Sub crear_Click()
    contador = contador + 1
    
    
    coordenada(contador, 1) = creax1
    coordenada(contador, 2) = creay1
    coordenada(contador, 3) = creax2
    coordenada(contador, 4) = creay2
    
    Monitor.Line (coordenada(contador, 1), coordenada(contador, 2))-(coordenada(contador, 3), coordenada(contador, 4)), vbBlack
    ' Monitor.Line (200, 400)-(3000, 700), vbBlack
      
    
    lineas.Caption = contador
    End Sub
    
    Private Sub move_Click()
    ' vx2 = x2.Text
    ' vy2 = y2.Text
    vx1 = movex1.Text
    vy1 = movey1.Text
    Monitor.Cls
    
    
    movimientos = contador
    
    Do While movimientos > 0
    
    coordenada(movimientos, 1) = coordenada(movimientos, 1) - vx1
    coordenada(movimientos, 2) = coordenada(movimientos, 2) - vy1
    coordenada(movimientos, 3) = coordenada(movimientos, 3) - vx1
    coordenada(movimientos, 4) = coordenada(movimientos, 4) - vy1
    
    Monitor.Line (coordenada(movimientos, 1), coordenada(movimientos, 2))-(coordenada(movimientos, 3), coordenada(movimientos, 4)), vbBlack
    movimientos = movimientos - 1
    Loop
    
        
    lineas.Caption = contador
    End Sub
    Normas de Hackhispano


    El olvido es el peor error que puede cometerse, pero es la mejor solución a muchos de los males
    Citar  
     

  3. #3  
    Administrador Foros HH
    Fecha de ingreso
    Mar 2002
    Mensajes
    3.067
    Descargas
    5
    Uploads
    0
    Te recomiendo que crees una clase Linea para gestionar todos los movimientos de la misma.
    Citar  
     

  4. #4  
    Avanzado
    Fecha de ingreso
    Feb 2004
    Ubicación
    Valencia
    Mensajes
    312
    Descargas
    0
    Uploads
    0
    Bufff veré que puedo hacer, porque VB es muy novedoso para mi..lo empece ayer mismo :S
    Normas de Hackhispano


    El olvido es el peor error que puede cometerse, pero es la mejor solución a muchos de los males
    Citar  
     

  5. #5  
    Administrador Foros HH
    Fecha de ingreso
    Mar 2002
    Mensajes
    3.067
    Descargas
    5
    Uploads
    0
    Entonces olvidate, pensaba que ya estabas más rodado.
    El tema de la clase es porque quieres tratar a esas líneas como objetos. Si hicieras una clase, podrías hacer métodos como .dibujar (x,y,l) o .mover(x,y), simplificando muchísimo el trabajo, además de que el código queda más limpio.
    Saludos.
    Citar  
     

  6. #6  
    Avanzado
    Fecha de ingreso
    Feb 2004
    Ubicación
    Valencia
    Mensajes
    312
    Descargas
    0
    Uploads
    0
    Pues mira, eso es lo que intentaba hacer en un principio, pero nada al final he hecho matrices, y bueno cuando coja más conocimientos a ver...por que también es verdad que tanta matríz conforme complicas el programa marea.

    Saludos y Gracias!
    Normas de Hackhispano


    El olvido es el peor error que puede cometerse, pero es la mejor solución a muchos de los males
    Citar  
     

  7. #7  
    Administrador Foros HH
    Fecha de ingreso
    Mar 2002
    Mensajes
    3.067
    Descargas
    5
    Uploads
    0
    Claro, es mucho más limpio y correcto.
    El guille nos muestra la diferencia entre arrays y clases:
    http://www.elguille.info/vb/VB_CLS.HTM#cls001
    Citar  
     

  8. #8  
    Avanzado
    Fecha de ingreso
    Feb 2004
    Ubicación
    Valencia
    Mensajes
    312
    Descargas
    0
    Uploads
    0
    La de el guille me complica un poco que soy muy nuevo, he estado mirando esto
    http://www.adrformacion.com/cursos/visual2/leccion2/tutorial2.html

    pero tengo una duda...lo que quiero guardar en una clase se pone en el key? no puede haber un key para llamarla y luego poner el dato?

    me explico, mira lo que tengo yo
    clase.Add A, "(coordenada(contador, 1), coordenada(contador, 2))-(coordenada(contador, 3), coordenada(contador, 4)), vbWhite"

    aquí guardo las coordenadas de una linea, pero claro cuando voy hacer otra es lo mismo y me da error porque se repite...umm voy a seguir luchando a ver si avanzo.

    NOTA: Si lo pongo entre comillas sé que no coge las variables y por eso dice que es igual, pero si le quito las comillas me dice que hay un error en las comas que separan las coordenadas :/

    Saludos
    Última edición por welvis30; 04-04-2007 a las 10:35
    Normas de Hackhispano


    El olvido es el peor error que puede cometerse, pero es la mejor solución a muchos de los males
    Citar  
     

  9. #9  
    Administrador Foros HH
    Fecha de ingreso
    Mar 2002
    Mensajes
    3.067
    Descargas
    5
    Uploads
    0
    Tienes que hacer un vector de esa clase, es decir, tu creas tu clase con sus metodos, y luego en el formulario te haces una variable que se tu clase

    Dim MiClase(10) as NombreClase

    Entonces, a partir de ahora harás referencia a esa clase así:

    MiClase(x).Pintame (x,y,l)

    No se si me explico.
    Citar  
     

  10. #10  
    Avanzado
    Fecha de ingreso
    Feb 2004
    Ubicación
    Valencia
    Mensajes
    312
    Descargas
    0
    Uploads
    0
    Ahora me han pedido que esas lineas las pueda mover con el cursor..es decir que pueda arrastrarlas y cambiarlas de coordenadas por el PictureBox...para ello necesitaría seguro lo de las clases? es que no me quedo muy clara la cosa y estado ahi luchando, pero...

    La array es doble es decir
    hago una array que por cada una tenga 4 para las coordenadas x1 y1 - x2 y2
    en tonces yo en una clase que pongo las arrays que contienen...1ª linea, 2ª...

    Porque ahora para cogerlo con el ratón tendría que clickar en algún objeto digo yo y que se moviese en coordenadas o sin clases también puedo? puf... madre mia ajaja nose para que me meto en estos fregaos.
    Última edición por welvis30; 05-04-2007 a las 13:51
    Normas de Hackhispano


    El olvido es el peor error que puede cometerse, pero es la mejor solución a muchos de los males
    Citar  
     

  11. #11  
    Avanzado
    Fecha de ingreso
    Feb 2004
    Ubicación
    Valencia
    Mensajes
    312
    Descargas
    0
    Uploads
    0
    A ver si me puedes ayudar eXcalibur, me da error de compilación cuando intento crear la linea, si hago un "Print lii(1,1)" me dice que es un dato erroneo entonces no sé si estoy agregando bien a la clase el dato, o es que no lo llamo bien..te pongo lo que llevo

    Código:
        Dim lii(1 To 50, 1 To 4) As New Collection
        Dim linea As New clase_linea 'clase_linea contiene x1,x2,y1,y2
    
    lii(contador, 1).Add linea, linea.x1
    lii(contador, 2).Add linea, linea.y1
    lii(contador, 3).Add linea, linea.x2
    lii(contador, 4).Add linea, linea.y2
    
    Monitor.Line (lii(contador, 1), lii(contador, 2))-(lii(contador, 3), lii(contador, 4))
    Última edición por welvis30; 20-04-2007 a las 11:18
    Normas de Hackhispano


    El olvido es el peor error que puede cometerse, pero es la mejor solución a muchos de los males
    Citar  
     

  12. #12  
    Administrador Foros HH
    Fecha de ingreso
    Mar 2002
    Mensajes
    3.067
    Descargas
    5
    Uploads
    0
    welvis, sube el código y postea la dirección, así podemos ver el código entre todos y seguro que te ayudamos
    Citar  
     

  13. #13  
    Avanzado
    Fecha de ingreso
    Feb 2004
    Ubicación
    Valencia
    Mensajes
    312
    Descargas
    0
    Uploads
    0
    Es que he vuelto atrás porque lo estaba haciendo todo con matrices como empece, pero veo que no, que tengo que hacer clases por huebos entonces he vuelto atrás y no tengo muxo código, pongo aquí el completo.

    Código:
    Dim contador As Integer
    -----------------------------------------------------
    Private Sub crear_Click()
    Dim lii(1 To 50, 1 To 4) As New Collection
    
    Dim linea As New clase_linea
    
        Set linea = Nothing
        linea.x1 = creax1
        linea.x2 = creax2
        linea.y1 = creay1
        linea.y2 = creay2
    
    contador = contador + 1
    
    lii(contador, 1).Add linea, linea.x1
    lii(contador, 2).Add linea, linea.y1
    lii(contador, 3).Add linea, linea.x2
    lii(contador, 4).Add linea, linea.y2
    
    
    
    Monitor.Line (lii(contador, 1), lii(contador, 2))-(lii(contador, 3), lii(contador, 4)), vbWhite
    
    
    lineas.Caption = contador
    End Sub
    creax1,creax2....son valores de campos de texto para introducir las coordenadas.
    Hay un módulo de clase con el nombre clase_linea.cls
    Código:
    Option Explicit
    
    Public x1 As String
    Public y1 As String
    Public x2 As String
    Public y2 As String
    Creo que queda claro, si no, lo subo, es que solo es eso ahora mismo, porque cuando consiga manejarme bien con las clases, pues ya migrare al que llevo más ámplio.
    .-Saludos-.
    Última edición por welvis30; 20-04-2007 a las 11:26
    Normas de Hackhispano


    El olvido es el peor error que puede cometerse, pero es la mejor solución a muchos de los males
    Citar  
     

  14. #14  
    Avanzado
    Fecha de ingreso
    Feb 2004
    Ubicación
    Valencia
    Mensajes
    312
    Descargas
    0
    Uploads
    0
    A ver, voy avanzando poco a poco ya puedo crear las lineas y almacenarlas como objetos !!!

    Pero ahora nose como puedo aplicarle eventos tipo mousse_down a un objeto que aún no está creado, cada linea es una colección, pero almacenada mediante matriz...me explico...
    linea(1) = coordenadas de la linea
    linea(2) = coordenadas de la linea

    Yo no sé llamar al objeto por ejemplo para decirle...que cuando clikes sobre el objeto aparezca nose...algo no sé seleccionarlo y modificarlo de manera gráfica.

    Subo lo que llevo http://download.yousendit.com/96C0112F05C0CBCA

    .-Saludos-.
    Última edición por welvis30; 23-04-2007 a las 13:13
    Normas de Hackhispano


    El olvido es el peor error que puede cometerse, pero es la mejor solución a muchos de los males
    Citar  
     

Temas similares

  1. [JAVA] dudas sobre gráficos y extensiones
    Por buff en el foro PROGRAMACION DESKTOP
    Respuestas: 2
    Último mensaje: 21-04-2008, 01:58
  2. Respuestas: 3
    Último mensaje: 22-04-2007, 23:25
  3. gráficos de polinomios
    Por rower en el foro GENERAL
    Respuestas: 21
    Último mensaje: 09-09-2006, 20:44
  4. Graficos En C Aki!
    Por Jakofff en el foro GENERAL
    Respuestas: 12
    Último mensaje: 06-04-2006, 14:23

Marcadores

Marcadores