Recordando viejos tiempos con el ordenador Spectrum. ( Es que soy un nostálgico de esa época)
Estaba acordándome como se dibujaba en aquella pantalla. El ejemplo es sencillo, se trata de dibujar un marco a la pantalla.
Si vemos el código de aquella vieja máquina.
El resultado era este:
Bien. En este caso las instrucciones del trazado se hicieron directamente.
Luego para reducir el código usábamos un método como este. Usando datas.
El resultado es idéntico
Ahora llevemos ese mismo código a Gambas.
Imaginemos el primer caso, instrucciones que dibujan una a una.
'Estan son las medidas de alta resolución de una pantalla de un Spectrum Sinclair
Private Const h As Integer = 175
Private Const w As Integer = 255
Public Sub _new()
End
Public Sub Form_Open()
Me.Center
End
Public Sub Lienzo_Draw()
Dibujar_Bordes()
End
Public Sub Dibujar_Bordes()
Paint.LineWidth = 2
Paint.MoveTo(0, 0)
Paint.LineTo(w, 0)
Paint.LineTo(w, h)
Paint.LineTo(0, h)
Paint.LineTo(0, 0)
Paint.Stroke
End
Private Const h As Integer = 175
Private Const w As Integer = 255
Public Sub _new()
End
Public Sub Form_Open()
Me.Center
End
Public Sub Lienzo_Draw()
Dibujar_Bordes()
End
Public Sub Dibujar_Bordes()
Paint.LineWidth = 2
Paint.MoveTo(0, 0)
Paint.LineTo(w, 0)
Paint.LineTo(w, h)
Paint.LineTo(0, h)
Paint.LineTo(0, 0)
Paint.Stroke
End
Y ahora usemos un array de array.
'Estan son las medidas de alta resolución de una pantalla de un Spectrum Sinclair
Private Const h As Integer = 175
Private Const w As Integer = 255
Private coordenadas As Integer[][] = [[0, 0], [w, 0], [w, h], [0, h], [0, 0]]
Public Sub _new()
End
Public Sub Form_Open()
Me.Center
End
Public Sub Lienzo_Draw()
Dibujar_Bordes()
End
Public Sub Dibujar_Bordes()
Dim i As Integer
Paint.LineWidth = 2
'Comienzo del dibujo
Paint.MoveTo(coordenadas[0][0], coordenadas[0][1])
'Trazado de las líneas
For i = 1 To coordenadas.Max
Paint.LineTo(coordenadas[i][0], coordenadas[i][1])
Next
Paint.Stroke
End
Private Const h As Integer = 175
Private Const w As Integer = 255
Private coordenadas As Integer[][] = [[0, 0], [w, 0], [w, h], [0, h], [0, 0]]
Public Sub _new()
End
Public Sub Form_Open()
Me.Center
End
Public Sub Lienzo_Draw()
Dibujar_Bordes()
End
Public Sub Dibujar_Bordes()
Dim i As Integer
Paint.LineWidth = 2
'Comienzo del dibujo
Paint.MoveTo(coordenadas[0][0], coordenadas[0][1])
'Trazado de las líneas
For i = 1 To coordenadas.Max
Paint.LineTo(coordenadas[i][0], coordenadas[i][1])
Next
Paint.Stroke
End
El resultado es, con respecto a la resolución de Spectrum 255 x 175, fue esto:
Bien, ¿ Qué opináis sobre la forma de dibujar ?. ¿ Creéis que es mejor hacerlo instrucción por instrucción o usar una array donde guardar las coordenadas ?.
Saludos