Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Rotar Un Rectangulo Dibujado En Un DrawingArea
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Rotar Un Rectangulo Dibujado En Un DrawingArea 
 
Hola a todos,

Dibujo un texto en un drawing area:

        Paint.Font = Font[tx.fn & "," & tx.fs]
        Paint.DrawText(tx.tx, (tx.x * x), (tx.y * y), (tx.w * x), (tx.h * y))
        Paint.Rotate(Rad(graus))
        Paint.Stroke
 

El texto se dibuja pero no consigo la rotación.

He probado con un rectangulo:
        Paint.LineWidth = 2
        Paint.Rectangle((tx.x * x), (tx.y * y), (tx.w * x), (tx.h * y))
        Paint.Rotate(Rad(graus))
        Paint.stroke
 


Con el rectangulo si consigo la rotación, pero con desplazamiento(no sobre su eje)

He leido en el foro y fuera de el este tipo de cosas con imágenes, utilizando Paint.translate. He hecho algunas pruebas sin éxito.

Que hago mal?

Gracias a todos.
 



 
última edición por xmuno el Viernes, 02 Octobre 2015, 18:49; editado 6 veces 
xmuno - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Rotar Un Rectangulo Dibujado En Un DrawingArea 
 
Hola

Echa un vistazo al artículo que escribí en el blog (hace ya 2 años!! que barbaridad, y no he escrito nada desde entonces   )

Ve a la sección que dice "Dibujando la nave" donde explico cómo encarar el problema de la rotación y el desplazamiento sobre el eje.

http://blog.gambas-es.org/aceleracion-y-friccion/

Espero que te sirva de ayuda, saludos
 




===================
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"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Rotar Un Rectangulo Dibujado En Un DrawingArea 
 
Hola xmuno,

el miembro del foro italiano, Gianluigi, me pidió de ponerte a disposición este su código, aquì agregado.


http://www.gambas-it.org/smf/index....g37099#msg37099

RuotaRettangolo-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: RuotaRettangolo-0.0.1.tar.gz
Tamaño: 6.24 KB
Descargado: 40 veces
RuotaRettangolo-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: RuotaRettangolo-0.0.1.tar.gz
Tamaño: 6.24 KB
Descargado: 40 veces
RuotaRettangolo-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: RuotaRettangolo-0.0.1.tar.gz
Tamaño: 6.24 KB
Descargado: 40 veces

 



 
última edición por vuott el Viernes, 08 Abril 2016, 09:20; editado 2 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Rotar Un Rectangulo Dibujado En Un DrawingArea 
 
Hola Vuott.

He cambiado esto en el código de rotación del rectángulo.

Public Sub btLeft_Click()

  ' Ogni volta che si agisce sul tasto incrementa il valore di un ottavo di giro:
  '' (positivo = senso antiorario)
  
  fAngolo += 45
  If fAngolo = 405 Then fAngolo = 45
  
  'No se necesita
 ' bOk = True
 'da.Refresh
 
 attivaDisegno()

End

Public Sub btRight_Click()

  ' Ogni volta che si agisce sul tasto decrementa il valore di un ottavo di giro:
  '' (negativo = senso orario)
  
  fAngolo -= 45
  If fAngolo = -405 Then fAngolo = -45
  
  'No se necesita  
  'bOk = True
  'da.Refresh
  
  attivaDisegno()
  
End
 


Y otra cosa más. Sé que el tamaño del formulario no se ha tenido en cuenta.
Pero imaginar que por un motivo, queréis cambiar el tamaño del formulario, maximizarlo por ejemplo
Si lo hacéis el dibujo desaparecerá!.  

Entonces hay que modificar el evento Resize y actualizar el contenido del DrawingArea, de esta forma:

'He añadido esto para que cuando se cambia de tamaño el formulario, no se pierda el dibujo
Public Sub Form_Resize()

  attivaDisegno()

End
 


Quizás es un ejemplo complejo.
Nunca olvidéis ver el ejemplo Painting del propio gambas. Podéis bajarlo de la granja, lo tenéis en la sección ejemplos.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Rotar Un Rectangulo Dibujado En Un DrawingArea 
 
Vuott:

Mejor usar el componente gb.qt4 y no usar gb.gtk.
Puede tener comportamientos extraños.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Sabado, 03 Octobre 2015, 10:02; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Rotar Un Rectangulo Dibujado En Un DrawingArea 
 
Si creamos un array de controles para los botones de rotación podemos agruparlo todo en un procedimiento:
He llamado al grupo de los dos botones, rotación.

Public Sub Rotacion_Click()
  
  Select Case Last.tag
    Case 0
      ' Ogni volta che si agisce sul tasto incrementa il valore di un ottavo di giro:
      ' positivo = senso antiorario
      fAngolo += 45
      If fAngolo = 405 Then fAngolo = 45
    Case 1
      ' Ogni volta che si agisce sul tasto decrementa il valore di un ottavo di giro:
      ' negativo = senso orario
      fAngolo -= 45
      If fAngolo = -405 Then fAngolo = -45      
  End Select
  
  attivaDisegno()
  
End
 


Observación:
Supongo que la intención del autor del código fue más para destacar algo que documentar.

Ejemplo:

Public Sub btLeft_Click()

  ' Ogni volta che si agisce sul tasto incrementa il valore di un ottavo di giro:
  '' (positivo = senso antiorario)
  
  fAngolo += 45
  If fAngolo = 405 Then fAngolo = 45
 attivaDisegno()

End
 


Como documentación (comentario con comillas dobles), creo que debería ser encima del procedimiento o función.
Dentro no hace nada.  

Ah, los comentarios siempre son constructivos.
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Rotar Un Rectangulo Dibujado En Un DrawingArea 
 
Al igual nos ocurre con el tipo de rotación, tambien se puede crear un array de controles:

Public Sub TipoRotacion_Click()

  ' indica il tipo di rotazione, attiva il disegno.
  Select Case Last.tag
    Case 0
      sPos = "Center"  
    Case 1
      spos = "Testa"
    Case 2
      spos = "Esterna"      
  End Select
  attivaDisegno()
  
End
 

 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Rotar Un Rectangulo Dibujado En Un DrawingArea 
 
Gracias, Shell, le referiré estas tus modificaciones allí en el foro.
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Rotar Un Rectangulo Dibujado En Un DrawingArea 
 
Hola Shell,

el nuestro amigo, Gianluigi, te da las gracias por tus sugerencias, y me pide de decirte que, tras haber aportado los tus cambios sugeridos, si él no pone sPos = "Center" en el Sub Form_Open la ventana se presenta como puedes ver en el file imagen adjunto.

El te pregunta si este problema ocurre a ti tambien.

imagen.png
Descripción:  
Tamaño: 20.04 KB
Visto: 24 veces

imagen.png

imagen.png
Descripción:  
Tamaño: 20.04 KB
Visto: 24 veces

imagen.png

imagen.png
Descripción:  
Tamaño: 20.04 KB
Visto: 24 veces

imagen.png


 



 
última edición por vuott el Domingo, 04 Octobre 2015, 16:58; editado 1 vez 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Rotar Un Rectangulo Dibujado En Un DrawingArea 
 
Hola Vuott.

Citar:

el nuestro amigo, Gianluigi, te da las gracias por tus sugerencias, y me pide de decirte que, tras haber aportado los tus cambios sugeridos,
si él no pone sPos = "Center" en el Sub Form_Open la ventana se presenta como puedes ver en el file imagen adjunto.


No tiene importancia. Lo hubiera hecho igual por cualquier programador de gambas de cualquier país.
El único problema es la barrera del idioma. (gran problema)

El efecto:

No, no creo que el problema sea de la variable sPos.
Cuando inicio el ejemplo el ordenador del trabajo, en cuestión de "segundos" desaparece el rectángulo
rápidamente.

En cambio si lo hago en el de casa, el rectángulo permanece, al igual que la imagen que me muestras.
Creo que tiene que ver un poco la configuración del escritorio (Qt 4  Settings).

Dile que pruebe a comentar todo el código  (para probar)  de Form_Resize()
Si ejecutamos el ejemplo paso a paso, Primero hace _New,  Form_Open y luego Form_Resize()
Y eso incluye ejecutar acttivaDisegno(), cosa que al principio no queremos.

Las mejoras están bien, pero no están optimizadas.

Reparar:
Se muestre o no, al principio el rectángulo:

- Si usamos los botones rotar a la izquierda o a la derecha, aparece el rectángulo. (Quizás necesitemos una variable booleana mas o cambiar algo )

Vuott una cuestión. En la comunidad Italiana, ¿ habéis hecho más ejemplos de dibujos ?.  Me gustaría conocerlos.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Letras En Un DrawingArea Shell General 2 Jueves, 17 Noviembre 2011, 12:27 Ver último mensaje
Shell
No hay nuevos mensajes Ejemplo De Movimiento De Un Objeto Dibujad... Shell Aplicaciones/Fragmentos de Código 3 Martes, 25 Junio 2013, 20:59 Ver último mensaje
jsbsan
No hay nuevos mensajes Rotar Y Girar Sobre Su Eje Una Imagen Con ... vuott Controles/Librerías/Componentes 10 Martes, 06 Junio 2017, 11:03 Ver último mensaje
vuott
No hay nuevos mensajes ImageMagick: Rotar Una Imagen vuott Aplicaciones/Fragmentos de Código 1 Miercoles, 07 Junio 2017, 07:09 Ver último mensaje
shordi
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron