Mayo 29, 2013, 03:22:20 PM Ultima modificación: Mayo 29, 2013, 05:54:49 PM por Nakatu
 Hola a todos,
alguien sabe como hacer que, clicando en la pantalla, se dibujen lineas por donde pasa el mouse? a modo pincel.
No se si me explico bien, pero si alguien me puede ayudar se lo agradeceria mucho.
Un saludo por adelantado
y muchas gracias  ;D

Una de mis pruebas ha sido esta:
Global left button
   If (variable tinta) is large than 1
   Create (un punto) in mouse_x mouse_y
   Else
   Exit event

Me funciona pero no queda como una línea, solo aparecen unos puntos...
Aver si a alguien se le ocurre algo mejor que a mi :P

Me parece que la mejor forma es usar surfaces, son como lienzos en donde podes dibujar, son un poco dificiles de usar pero es la opcion mas apropiada, ya que si usas objetos vas a trabar el juego si dibujas mucho. Eso se haría dibujando circulos en la surface, a lo mejos si el mouse se mueve muy rapido vas a seguir viendo circulos en vez de lineas. Lo que se me ocurre es que dibujes lineas que vayan desde la posición del mouse hasta la posicion anterior del mouse, no se si se entiende
El Manual

- Ley de la gravitación selectiva: toda herramienta se caerá donde produzca el mayor daño.
- Si todo parece estar bien, es obvio que uno no encontró el problema
- Todo aquello que se corte a medida resultara ser demasiado corto.
- Todo archivo borrado era necesario, todo archivo conservado es inutil
- Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.

                                                               Murphy


Muchas Gracias por responder, Mgbu
Ya miraré el tema de las surfaces. Tambien lo habia pensado hacer, lo del mouse, pero no se como.... si me lo puedes explicar me harias un gran favor, XD

Cita de: Mgbu en Mayo 29, 2013, 09:47:39 PM
Me parece que la mejor forma es usar surfaces, son como lienzos en donde podes dibujar, son un poco dificiles de usar pero es la opcion mas apropiada, ya que si usas objetos vas a trabar el juego si dibujas mucho. Eso se haría dibujando circulos en la surface, a lo mejos si el mouse se mueve muy rapido vas a seguir viendo circulos en vez de lineas. Lo que se me ocurre es que dibujes lineas que vayan desde la posición del mouse hasta la posicion anterior del mouse, no se si se entiende

Como dice Mgbu, te hice un editable con surfaces, bastante sencillo, en el cual puedes ademas cambiar el tamaño de la broca y el color. Pero bueno, el único fallo es lo que dice Mgbu, si mueves muy rápido el cursor se dibujan los circulos muy separados. XD

#5 Mayo 30, 2013, 01:56:30 AM Ultima modificación: Mayo 30, 2013, 02:00:53 AM por Mgbu
Creo que se haria con algo asi en el step:
xmouseanterior = xmouse
xmouse = mouse_x

Para que no de error en el create agregarìa
xmouseanterior = mouse_x
xmouse = mouse_x



E igual con la coordenada "y" del mouse. En el create habría que guardar la coordenada en una variable (xmouseanterior), en el proximo step la coordenada del step anterior (xmouseanterior) serìa la guardada previamente, y la nueva coordenada (xmouse) serìa la verdadera del mouse (mouse_x)


Cita de: Silver_light en Mayo 30, 2013, 01:52:03 AM
Como dice Mgbu, te hice un editable con surfaces, bastante sencillo, en el cual puedes ademas cambiar el tamaño de la broca y el color. Pero bueno, el único fallo es lo que dice Mgbu, si mueves muy rápido el cursor se dibujan los circulos muy separados. XD
Parece que si, lo pude hacer correr hasta a 1000fps pero igual se dibuja mal ¿Còmo hacen los otros programas? ¿Usan lineas? A lo mejor hacen curvas suavizadas a partir de los puntos, no se
El Manual

- Ley de la gravitación selectiva: toda herramienta se caerá donde produzca el mayor daño.
- Si todo parece estar bien, es obvio que uno no encontró el problema
- Todo aquello que se corte a medida resultara ser demasiado corto.
- Todo archivo borrado era necesario, todo archivo conservado es inutil
- Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.

                                                               Murphy


Cita de: Mgbu en Mayo 30, 2013, 01:56:30 AM
Parece que si, lo pude hacer correr hasta a 1000fps pero igual se dibuja mal ¿Còmo hacen los otros programas? ¿Usan lineas? A lo mejor hacen curvas suavizadas a partir de los puntos, no se

Perdón pero no entiendo a que te refieres con eso de que se dibujan mal, ¿podrías explicarlo?.

Muchas gracias Silver_light y Mgbu,
una última pregunta: si ago lo de las línias, ¿Puedo cambiar las propiedades de la línia? Como hacer la línia mas ancha o ponerle unos sprites por encima, unas luces o effectos a la línia.

Cita de: brunoxzx en Mayo 30, 2013, 04:51:16 AM
Cita de: Mgbu en Mayo 30, 2013, 01:56:30 AM
Parece que si, lo pude hacer correr hasta a 1000fps pero igual se dibuja mal ¿Còmo hacen los otros programas? ¿Usan lineas? A lo mejor hacen curvas suavizadas a partir de los puntos, no se

Perdón pero no entiendo a que te refieres con eso de que se dibujan mal, ¿podrías explicarlo?.
Me refiero a que se dibujan lineas de puntos, pero me sorprende de que a tantos fps siga pasando

Cita de: Nakatu en Mayo 30, 2013, 11:13:21 AM
Muchas gracias Silver_light y Mgbu,
una última pregunta: si ago lo de las línias, ¿Puedo cambiar las propiedades de la línia? Como hacer la línia mas ancha o ponerle unos sprites por encima, unas luces o effectos a la línia.
La forma de dibujar una surface es identica a la de dibujar la pantalla directamente, para hacer el ancho deberias usar draw_line_width, podes hacerla de distintos colores, y para ponerle sprites vas a tener que hacer un poco de matematica, no se, porque vas a tener que dibujar sprite por sprite
El Manual

- Ley de la gravitación selectiva: toda herramienta se caerá donde produzca el mayor daño.
- Si todo parece estar bien, es obvio que uno no encontró el problema
- Todo aquello que se corte a medida resultara ser demasiado corto.
- Todo archivo borrado era necesario, todo archivo conservado es inutil
- Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.

                                                               Murphy



#10 Mayo 31, 2013, 06:14:32 AM Ultima modificación: Mayo 31, 2013, 06:18:21 AM por brunoxzx
Cita de: Mgbu en Mayo 30, 2013, 07:08:02 PM
Me refiero a que se dibujan lineas de puntos, pero me sorprende de que a tantos fps siga pasando
Ah perdón, no se en que estaba pensando. Sigue sucediendo por que las frecuencias de re-dibujado del monitor no pasan de las 100 por segundo (por lo que tener un juego corriendo a más de esa velocidad es inútil). Debo suponer que otros programas usan lineas suavizadas intentando deducir por donde paso el mouse, por suerte los paths de gm tienen curvas bezier pre-programadas y no es necesario hacer un scrpit para dibujarlas, dejo un ejemplo adjunto.

Nota: El script no está optimizado (eso se los dejo a ustedes) y hacer lineas muy grandes puede bajar los fps hasta que se suelte el click.