|
Página 1 de 1
|
Autor |
Mensaje |
alejandrodaniel
Usuario
Registrado: Noviembre 2013
Mensajes: 7
Edad: 67
|
Cuadrante Con Draw.line
estoy trabajando con pics y modulos hmc5883L(sensor magnetico) y logre transmitir los datos al PC con un terminal en Gambas2 en bus RS232.hace el log de los datos recibidos en una textarea y vuelca los datos de los ejes en txa individuales para cada eje + ena txa con los grados equivalentes.quisiera crear una interfaz con draw.un cuadrante y una line que senale los grados en el cuadrante.no se mucho de Draw y Line.consegui disenar un circulo,pero no se como se usa la propiedad Line.
Citar:
PUBLIC SUB Brujula_Draw()
DIM CentroY, CentroX, i, v AS Integer
CentroY = Brujula.h / 2
CentroX = Brujula.w / 2
'Crea el cuadrante de la brujula
Draw.FillColor = Color.Black
Draw.FillStyle = Fill.Solid
Draw.Circle(CentroX, CentroY, 177)
Draw.ForeColor = Color.White
Draw.LineWidth = 3
FOR I = 0 TO 360
'Draw.Line(CentroX,CentroY,X2 ,Y2)
NEXT
no se como hacer "digerir" al FOR los datos que llegan en grados de 0°-360°
|
#1 Sabado, 27 Septiembre 2014, 15:41 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Cuadrante Con Draw.line
alejandrodaniel:
Citar: no se como hacer "digerir" al FOR los datos que llegan en grados de 0°-360°
Sin ver el programa completo, es dificil ayudarte
¿que son X2 y Y2? ¿son arrays?
Si fueran asi se podria hacer esto:
FOR I = 0 TO 360
'Draw.Line(CentroX,CentroY,X2[i] ,Y2[i])
NEXT
Aparte, si los datos son en grados, supongamos que tienes 30º, lo que tendrias que hacer es convertir esos grados en coordenadas X e Y, usando las funciones de seno y coseno (sin y cos), y pasando los datos de grados a radianes...
|
#2 Sabado, 27 Septiembre 2014, 16:06 |
|
|
alejandrodaniel
Usuario
Registrado: Noviembre 2013
Mensajes: 7
Edad: 67
|
Re: Cuadrante Con Draw.line
Citar:
PUBLIC SUB Brujula_Draw()
DIM CentroY, CentroX, i, v AS Integer
CentroY = Brujula.h / 2
CentroX = Brujula.w / 2
'Crea el cuadrante de la brujula
Draw.FillColor = Color.Black
Draw.FillStyle = Fill.Solid
Draw.Circle(CentroX, CentroY, 177)
Draw.ForeColor = Color.White
Draw.LineWidth = 3
FOR I = 0 TO 360
'Draw.Line(CentroX,CentroY,X2 ,Y2)
NEXT
como se ve en la citacion,en el ciclo for la propiedad Draw.Line esta comentada porque no se como se usa.en sintesis al ingreso de un dato(grados hexagesimales) la linea marcarà la posicion en un cuadrante como si fuera una brujula.
en gestiòn de datos y databases,asi como comunicacion RS232 se como crear un codigo.pero en interfaz graficas tipo DrawingArea soy un chasco.
|
#3 Sabado, 27 Septiembre 2014, 23:01 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Cuadrante Con Draw.line
alejandrodaniel:
Citar: propiedad Draw.Line esta comentada porque no se como se usa.
Ah bueno, si es eso, mírate la documentación de Gambas2 ( http://www.gambasdoc.org/help/comp/gb.qt/draw/line?es&v2 ).
Alli hay varios ejemplos de como se usa.
En sintesis, le tienes que decir el primer punto donde empieza la linea (CentroX,CentroY) y el segundo (x2,y2) punto donde termina la linea
Allí hay varios ejemplos de como se usa.
Saludos
Nota:
Lo que no entiendo es porque la tienes dentro del bucle for...
última edición por jsbsan el Sabado, 27 Septiembre 2014, 23:39; editado 1 vez
|
#4 Sabado, 27 Septiembre 2014, 23:38 |
|
|
alejandrodaniel
Usuario
Registrado: Noviembre 2013
Mensajes: 7
Edad: 67
|
Re: Cuadrante Con Draw.line
el bucle es solo para provar se gira en el cuadrante.a interfaz terminada marcara la posicion que determinaran los datos en ingreso.si quieren puedo postar el codigo del programa che se conecta al pic y recibe los datos determinando la posicion en el espacio cartesiano.
|
#5 Domingo, 28 Septiembre 2014, 15:32 |
|
|
alejandrodaniel
Usuario
Registrado: Noviembre 2013
Mensajes: 7
Edad: 67
|
Re: Cuadrante Con Draw.line
bueno,mirando el ejemplo de Reloj analogico con los ejemplos de Gambas2 pude finalmente crear esta interfaz.nada de espectacular,pero funciona.dejo algunas imagenes y el code.
Citar:
SUB PUBLIC Elaboracion_Datos()
.
.
.
.
Contador = CInt(Trim(txbGrados.Text))
Brujula.Refresh
END SUB
PUBLIC SUB Brujula_Draw()
DIM CentroY, CentroX AS Integer
Brujula.Clear
CentroY = Brujula.h / 2
CentroX = Brujula.w / 2
'Crea el cuadrante de la brujula
Draw.FillColor = Color.Black
Draw.FillStyle = Fill.Solid
Draw.Circle(CentroX, CentroY, 193)
'Crea las lineas de divisiòn
Draw.Forecolor = Color.Orange
Draw.LineWidth = 5
Draw.Line(193, 1, 193, 22)
Draw.Line(193, 386, 193, 364)
Draw.Line(1, 193, 22, 193)
Draw.Line(386, 193, 364, 193)
'Calcula la posiciòn
Calculo_posicion(Contador)
END
PUBLIC SUB Calculo_posicion(Grados AS Integer)
DIM X2, Y2 AS Integer
DIM Angulo AS Float
Draw.Forecolor = Color.Yellow
Draw.LineWidth = 5
Angulo = CFloat(Grados) / 360 * 2 * Pi
X2 = 193 + (193 * Sin(Angulo))
Y2 = 193 - (193 * Cos(Angulo))
Draw.Line(193, 193, X2, Y2)
END
PUBLIC SUB rbPunto_Click()
lblNorte.Text = "Norte"
lblOeste.Text = "Oeste"
lblSur.Text = "Sur"
lblEste.Text = "Este"
END
PUBLIC SUB rbGrados_Click()
lblNorte.Text = " 0°"
lblOeste.Text = "90°"
lblSur.Text = " 180°"
lblEste.Text = "270°"
END
olvidaba,grazias a todos y principalmente a jsbsan
última edición por alejandrodaniel el Domingo, 28 Septiembre 2014, 17:52; editado 2 veces
|
#6 Domingo, 28 Septiembre 2014, 17:48 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Cuadrante Con Draw.line
Está chulo.
|
#7 Domingo, 28 Septiembre 2014, 17:52 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Cuadrante Con Draw.line
Bueno, me he pegado toda la tarde para hacer una brújula enteramente con DrawingArea, todo pintado usando la clase Draw. Supongo que funcionará en Gambas2, no lo he probado, pero en caso que tengas que convertirlo a gambas2, sólo hay que poner un DrawingArea de tamaño 300px * 300px en el formulario y copiar el código del mismo.
Basta con asignar un valor a la propiedad Rumbo del formulario y la aguja se orienta al valor establecido. He puesto un control slider para probar su funcionamiento, pero se puede eliminar. Por supuesto, el código se puede modificar para poner otros colores, anchura de trazos, etc, pero las medidas las he ido adaptando mediante prueba y error y son valores fijos. Si quieres que se adapte al tamaño del formulario, necesita más trabajo.
Os dejo una captura y el proyecto completo:
Saludos
Descripción: |
Boceto sencillo de un control Brújula (Compás) |
Descargar |
Nombre del archivo: |
Compass.zip |
Tamaño: |
10.41 KB |
Descargado: |
40 veces |
Descripción: |
Boceto sencillo de un control Brújula (Compás) |
Descargar |
Nombre del archivo: |
Compass.zip |
Tamaño: |
10.41 KB |
Descargado: |
40 veces |
Descripción: |
Boceto sencillo de un control Brújula (Compás) |
Descargar |
Nombre del archivo: |
Compass.zip |
Tamaño: |
10.41 KB |
Descargado: |
40 veces |
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#8 Domingo, 28 Septiembre 2014, 20:50 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|