https://foro.gambas-es.org/viewtopic.php?f=5&t=973
-----------------------------------
anahaga
Lunes, 27 Septiembre 2010, 22:07

Generar Plano Cartesiano
-----------------------------------
Hola a todos.

Necesito crear un plano cartesiano con los ejes x,y; ingresando las coordenadas en tiempo de ejecucion, o a su vez puedo seleccionar un punto en el plano cartesiano para fijar un par ordenado.

Gracias.


-----------------------------------
jguardon
Martes, 28 Septiembre 2010, 19:46

Re: Generar Plano Cartesiano
-----------------------------------
Para eso necesitas usar un DrawingArea y para saber el punto donde pulsas con el ratón para definir sus coordenadas, deberás poner su propiedad Tracking en True. Más info sobre DrawingArea:

http://gambasdoc.org/help/comp/gb.qt/drawingarea?es

Pero no es tan fácil como parece, porque las coordenadas de pantalla 'Y' comienzan en 0 en la parte superior izquierda y tendrás que invertir los valores a representar. También tendrás que "trasladar" y "escalar" las dimensiones del "mundo real" a las de pantalla mediante los métodos .Scale y .Translate de la clase Draw.

Aunque no es exactamente lo que pides, te puedo mostrar un procedimiento donde dibujo unos paralelos y meridianos en un mapa y al pasar el ratón por encima del mapa, se muestran las coordenadas reales. Es bastante complejo, a decir verdad, pero espero que puedas aprovechar o entender algo del código para tus propósitos. (canvas_MouseMove() y drwGrid() especialmente)

http://trac6.assembla.com/dfhlog/browser/trunk/FLoc.class#L145

Saludos


-----------------------------------
jsbsan
Miercoles, 29 Septiembre 2010, 13:56

Re: Generar Plano Cartesiano
-----------------------------------
Hola, he hecho un pequeño programita (aprovechando el codigo de wikilibro de gambas en ingles), para dibujar una espiral.
Colocando el eje cartesiano y que se vean las coordenadas del raton cuando pasa por el drawingarea.

Tambien hay dos funciones para convertir las coordenadas "reales" a la pantalla.

[code linenumbers=false syntax=gambas]'-------------------- convertir coordenadas -----------------
PUBLIC FUNCTION coorX(a AS Float) AS Float
RETURN Fix(CFloat(a - xmin) / (xmax - xmin) * (DrawingArea1.Width))
END
PUBLIC FUNCTION coory(b AS Float) AS Float
RETURN DrawingArea1.Height - Fix(CFloat(b - ymin) / (ymax - ymin) * (DrawingArea1.Height))
END[/code]
Además de incluir zoom.

Echale un vistazo a ver que te sirve...
Este es el [url=http://jsbsan.wordpress.com/2010/09/29/dibujando-en-gambas-espiral-y-coordenas-del-raton-cuando-pasas-por-el-dibujo/]Enlace

[img]http://jsbsan.files.wordpress.com/2010/09/pantallazo-23.png[/img]

Saludos

Nota: 
Los métodos .Scale y .Translate no se como se utilizan.. seguramente sera más fácil con ellos...  :roll: 

Jguardon:
¿podias subir la fuente completa del programa?


