Diferencias Entre Gb.gui Y Gb.qt. Coordenadas


Objetivo: 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:

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.

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:

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: 39 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: 39 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: 39 veces

Objetivo: 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

Perfil MP  
Objetivo: 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.

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:

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

última edición por Shell el Domingo, 30 Octobre 2016, 10:59; editado 2 veces

Página 1 de 1


  
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

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.415s (PHP: -73% SQL: 173%)
Consultas SQL: 47 - Debug off - GZIP Activado