Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Diferencias Entre Gb.gui Y Gb.qt. Coordenadas
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Diferencias Entre Gb.gui Y Gb.qt. Coordenadas 
 
Hace poco estuve viendo un ejemplo que hice en Febrero del 2016.
En el ejemplo heredaba un DrawingArea y le daba unas propiedades, métodos, etc, etc.

Luego tenía un formulario que se encargaba de mostrar en distintos formularios el mismo control.
Bien, he creado un ejemplo aquí que reproduce el problema, aunque no sea el mismo ejemplo.
Gracias a el , he resuelto el "misterio".  

Fijaros, tengo esto:

Una clase Lienzo:

Código: [Descargar] [Ocultar] [Seleccionar]
Inherits DrawingArea

Public Sub _new()
  
  With Me
    ' .x = 0
    ' .y = 0
    .w = 300
    .H = 300
    .Border = Border.Sunken
  End With
  
End
 


( Luego os explico por que he comentado la coordenada de posición ).

Un formulario que carga distintos formularios para mostrar distintas instancias de lo mismo.

Código: [Descargar] [Ocultar] [Seleccionar]
Public Sub Form_Open()


End

Public Sub btnCrear_Click()

Dim unformulario As FormLienzo

unformulario = New FormLienzo
unformulario.Show()  

End
 


El formulario donde voy a mostrar el DrawingArea:

Código: [Descargar] [Ocultar] [Seleccionar]
Public Sub Form_Open()

  Dim unareadibujo As New Lienzo(Me) As "hdibujo"
  
  With Me
    .W = unareadibujo.w
    .H = unareadibujo.H
  End With
  
End
 


Os relato el problema. Como habéis podido comprobar no le dicho donde tiene que situar el DrawingArea en el formulario formLienzo.
Pues bien.

Esto ocurre si uso gb.gui:

 con_gb_gui

Por defecto ha tomado para el control DrawingArea, la posición x = 0 e y = 0.
En cambio fijaros que pasa si selecciono que quiero: gb.gui.qt

 con_gbguiqt

Aunque el código es el mismo para ambas librerías gráficas, la posición del control se pierde si no se le especifica en el código usando gb.gui.qt.
Si voy a la clase Lienzo y especifico las propiedades: x = 0 e y = 0, no tengo problemas usando gb.gui.qt

Os subo el código para que podáis probarlo.

PropiedadesYLibrerias.tar.gz
Descripción: Ejemplo de diferencias con las propiedades .x e .y de un control usando las librerías gb.gui y gb.gui.qt 
Descargar
Nombre del archivo: PropiedadesYLibrerias.tar.gz
Tamaño: 12.6 KB
Descargado: 38 veces
PropiedadesYLibrerias.tar.gz
Descripción: Ejemplo de diferencias con las propiedades .x e .y de un control usando las librerías gb.gui y gb.gui.qt 
Descargar
Nombre del archivo: PropiedadesYLibrerias.tar.gz
Tamaño: 12.6 KB
Descargado: 38 veces
PropiedadesYLibrerias.tar.gz
Descripción: Ejemplo de diferencias con las propiedades .x e .y de un control usando las librerías gb.gui y gb.gui.qt 
Descargar
Nombre del archivo: PropiedadesYLibrerias.tar.gz
Tamaño: 12.6 KB
Descargado: 38 veces

 




===================
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: Diferencias Entre Gb.gui Y Gb.qt. Coordenadas 
 
Por lo que veo no es que se pierda es que toma como referencia el borde de la ventana, no del formulario...
Salvo necesidad imperiosa, creo que es primitivo y poco eficaz especificar a capón ubicaciones y tamaños. Nunca sabes qué definición va a tener el usuario en su máquina ni qué tamaño de escritorio ni nada. cambia esas dos instrucciones por un expand=true y punto.

Saludos
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Diferencias Entre Gb.gui Y Gb.qt. Coordenadas 
 
Shordi:

Citar:

Por lo que veo no es que se pierda es que toma como referencia el borde de la ventana, no del formulario...

Vaya.

Citar:

Salvo necesidad imperiosa, creo que es primitivo y poco eficaz especificar a capón ubicaciones y tamaños. Nunca sabes qué definición va a tener el usuario en su máquina ni qué tamaño de escritorio ni nada. cambia esas dos instrucciones por un expand=true y punto.


Para los ejemplos que estoy haciendo necesito que el formulario se ajuste al tamaño del DrawingArea.
No puede cambiar de tamaño un poco mas el DrawingArea con expand. Depende de esto el tamaño de las celdas, el trazado.
Te diré que es un tablero. Todo por ahora es dibujado.

Ejemplo de tablero de 360 x 360: Las x's tambien son dibujadas, no es una imagen.
El tipo de marca depende si es ordenador o si es jugador humano.

 360x360

Tengo que adaptar como debe quedar las marcas si el tablero es mayor, si es menor. Escalar el dibujo: Ejemplo 720 x 720
En este caso tienen un grosor fijo de trazado que no he adaptado a un tamaño de celda mayor.

 720x720

Puedo cambiar el tamaño de las celdas, etc,etc.. Ejemplo 18 x 18 celdas en un tablero de 720 x 720.

 18x18_celdas

Como ves el tamaño y la separación de la x depende del tamaño de la celda, que a su vez depende del tamaño del DrawingArea ( Tablero ).
Se debe establecer unos limites, etc, etc.

Como es un código que tiene un tiempo, tengo que modificarlo. Que seguro que con una división se hace mejor.
En este caso es el método que dibuja las X's de la clase Celda.

Código: [Descargar] [Ocultar] [Seleccionar]
Public Sub DibujarXs()

  Dim lugarx, lugary As Integer  
  Dim separacionesquinas As Integer = 10
  
  Paint.LineWidth = 5
  
  'Se comienza "siempre" a dibujar por la esquina superior izquierda. Nunca olvidar eso
  
  'Se van a dibujar dos diagonales  
  'La separacion de las esquinas es una separación para que no comience justo en la esquina
  'ni tampoco que llegue al final de la otra esquina
  
  'Tambien aclarar que es un cuadrado más que un rectángulo. En este caso sus dimensiones son iguales
  'por cada lado
  
  'Primera coordenada
  lugarx = Me.x * Me.ancho
  lugary = Me.y * Me.alto  
  'Colocar en el lugar y trazar la  primera diagonal    
  Paint.MoveTo(lugarx + separacionesquinas, lugary + separacionesquinas)
  Paint.LineTo(lugarx + Me.ancho - separacionesquinas, lugary + Me.alto - separacionesquinas)  
    
  'Segunda coordenada
  lugarx = Me.x * Me.ancho
  lugary = Me.y * Me.alto
  'Colocar en el lugar y trazar la segunda diagonal  
  Paint.MoveTo(lugarx + separacionesquinas, lugary + Me.alto - separacionesquinas) '
  Paint.LineTo(lugarx + Me.ancho - separacionesquinas, lugary + separacionesquinas)
    
  'Coloreamos de rojo
  Paint.Brush = Paint.Color(Color.Red)
  Paint.Stroke
  
End
 


Es una especie de comienzo de prototipo de tablero para el juego de los barquitos.

Este es el principio de la clase Celda:

Código: [Descargar] [Ocultar] [Seleccionar]
Inherits DrawingArea

Const NUMCELDAS As Integer = 9 '( 9 x 9 )
Const TABLERO As Integer = 360 '(360 x 360 )

Private tcelda As Integer = TABLERO \ NUMCELDAS
Private gceldas As New ClaseCelda[]
Private existemarca As New Boolean[NUMCELDAS, NUMCELDAS]

....
 


Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Domingo, 30 Octobre 2016, 10:59; editado 2 veces 
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 Diferencias Entre SELECT CASE / IF...THEN AnSnarkista General 5 Lunes, 02 Agosto 2010, 23:21 Ver último mensaje
AnSnarkista
No hay nuevos mensajes [C] Diferencias Entre El Lenguaje C Y El L... Shell C/C++ 2 Jueves, 29 Diciembre 2016, 11:28 Ver último mensaje
Shell
No hay nuevos mensajes Diferencias Entre QBasic Y GW-Basic Shell General 0 Domingo, 20 Enero 2019, 10:57 Ver último mensaje
Shell
No hay nuevos mensajes Diferencias Entre Hosting Y Servidor VPS Â... Shell Hardware 4 Sabado, 16 May 2020, 17:44 Ver último mensaje
jguardon
 

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